当前位置:编程学习 > JAVA >>

Hibernate读书笔记-----Hibernate知识总结

 利用一个星期(实际上是两个星期的上午)的时间终于是结束了Hibernate,本来在四月份就可以结束的,但是由于为期一个月的实习,加上各种考试、三个课程设计,hibernate的学习一直都是断断续续的,等到暑假有时间了,也差不多都忘记了,于是只有从头开始了。下面是我就这个星期所学的知识的一个简要的总结。
 
         一、Hibernate开发流程
          Hibernate是一个面向java环境的对象/关系数据库映射工具,用来把对象模型表示的对象映射到基于SQL的关系模型数据结构中去。主要是完成面向对象的编程语言到关系型数据库的映射
          Hibernate的开发流程一般有如下几个步骤:
             1、编写domain对象:持久化类。
             2、加入hibernate.jar和其依赖的包。
             3、编写XX.hbm.xml映射文件。
             4、编写hibernate.cfg.xml配置文件。必须要提供以下几个参数:connection.driver_class、connection.url、connection.username、connection.password、dialect、hbm2ddl.auto。
            5、编写HibernateUtil工具类、主要用于完成hibernate的初始化过程和提供一个获得session的方法(可选)。
            6、编写实现类。
 
         二、Hibernate的体系结构
          Hibernate有如下三种体系结构:
          非常简要的Hibernate体系结构的概要图:

          从这个图可以看出,Hibernate使用数据库和配置信息来为应用程序提供持久化服务(以及持久的对象)。
 
          轻型”的体系结构方案,它要求应用程序提供自己的JDBC 连接并管理自己的事务

          全面解决”的体系结构方案,将应用层从底层的JDBC/JTA API中抽象出来,而让Hibernate来处理这些细节。

 
         三、Hibernate的持久化类
          Hibernate采用完全面向对象的方式来操作数据库,通过Hibernate的支持,我们只需要管理对象的状态,无须关心底层数据库系统的细节。
 
          虽然Hibernate对持久化类没有太多的要求,但是我们应该遵循如下规则:
             1、提供一个无参的构造函数。
             2、提供一个标识属性。
             3、为持久化类的每个属性听过getter和setter方法
             4、使用非final类
 
          持久化对象有如下几个对象状态:
             1、瞬态:对象有new操作符创建,且尚未与Hibernate Session关联的对象被认为处于瞬态。
             2、持久化:持久化实例在数据库中有对应的记录,并且拥有一个持久化标识
             3、托管:某个实例曾经处于持久化状态,但随着与之关联的Session被关闭了额,那么该对象就变成了托管状态。
        
          三种状态的演变图如下:

          Hibernate提供save()、persist()方法可以将对象转变为持久化状态。但是两个方法存在一点区别:save()方法保存持久化对象时,该方法返回持久化对象的标识属性值,而且他会立即将持久化对象的数据插入到数据库中。但是persist()方法就没有任何返回值,它保证当他在一个事务外部被调用时,并不会立即转换成insert语句,这个特性对于我们在封装一个长回话流程的时候,显得很重要。
          同时我们还可以通过load()和get()方法来加载一个持久化对象。两者都是根据主键装载持久化实例的。但是两者的区别就在于:get()方法会立即加载,而load()方法会延迟加载。
        
         四、Hibernate的配置:hibernate.cfg.xml和映射文件
          Hibernate进行持久化操作时是离不开SessionFactory对象,这个对象是整个数据库映射关系经过编译后的内存镜像。该对象由Configuration对象产生的。Configuration对象代表了应用程序到数据库的映射配置。创建Configuration对象,通常有如下几种配置Hibernate的方式。
          1、使用hibernate.cfg.xml文件作为配置文件
          2、使用hibernate.properties文件作为配置文件
          3、不适用任何配置文件,以编码方式创建Configuration对象
 
          其中hibernate.cfg.xml文件是最常用的。对于hibernate.cfg.xml而言,必须要提供以下几个参数:
          connection.driver_class:设置连接数据库的驱动。
          connection.url:设置所需要连接数据库服务的URL。
          connection.username:连接数据的用户名。
          connection.password:连接数据的密码
          dialect:设置连接数据库使用的方言
          hbm2ddl.auto:设置当创建SessionFactory时,是否根据映射文件自动建立数据。
 
          一般hibernate.cfg.xml的配置文件如下(以SQL2005为例):
[html] 
<hibernate-configuration> 
    <session-factory> 
        <!-- 指定连接数据库所用的驱动 --> 
        <property name="connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property> 
        <!-- 指定连接数据的url --> 
        <property name="connection.url">jdbc:sqlserver://localhost:1433;databaseName=test</property> 
        <!-- 指定连接数据库的用户名 --> 
        <property name="connection.username">sa</property> 
        <!-- 指定数据库的密码--> 
        <property name="connection.password">*****</property> 
        <!-- 指定连接池里最大的连接数 --> 
        <property name="hibernate.c3p0.max_size">200</property> 
        <!-- 指定连接池里最小的连接数 --> 
        <property name="hibernate.c3p0.min_size">1</property&

补充:软件开发 , Java ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,