Hibernate的简介及使用规则

Hibernate的简介及使用规则

  1. Hibernate的简介
    Hibernate是一个开放源代码的O/R Mapping (对象关系映射框架),它对JDBC进行了轻量级的对象封装,使Java程序员可以随心所欲的使用对象编程思维来操纵数据库。
  2. Hibernate的持久层解决方案
    为了企业应用与后端数据库频繁交互,并且使得交互更加有效而迅捷,企业应用开发者在应用和数据库之间创建了一个“持久层”。这个数据库负责存储从应用到数据库的数据,也负责数据的检索、更新和删除。在基于J2EE的企业应用中,组成这个持久层的Java类既可以映射对象到数据,也可以映射数据到对象。持久层建立是简单的,但是,这种关系常常难于建立,因为对象或者下层的数据库结构复杂,很难做到把关系表记录完整的映射到持久对象的关系上来,这主要体现在多表的关系无法直接映射到对持久对象的映射上来,可能是一个表映射多个持久对象,有可能是多个表映射一个持久对象,更有可能的是表的某些字段映射到一个持久对象,另外一些字段映射到别的持久对象上。Hibernate 是一个开源对象/与持久性和查询相关的框架,Hibernate 帮助基于普通的Java对象模型的持久对象的创建,从而允许持久对象拥有复杂的结构如混合类型、集合和属性,还可以拥有用户自定义的类型。现在这些持久对象可以有效的反映出底层数据库模式的复杂结构。为了提高效率,Hibernate包括了一些策略,如与数据库交互时的多重最优化,包括对象的缓存、有效外部连接的获取、必要时SQL语句的执行。
  3. 安装Hibernate
    • 下载Hibernate源代码版本,可从以下网址下载:
      http://prdownloads.sourceforge.net/hibernate/?sort_by=date&sort=desc
    • 解压到你想要放的目录,(最好不要是应用程序开发目录下,因为hibernate的功能都在它提供的jar包里,如果将源文件都放到一起,势必造成代码混乱)
    • 将hibernate2.jar和lib目录下的第三方提供的jar包放到你要开发的应用程序的lib目录下
  4. 配置Hibernate
    简要介绍一下Hibernate的各个配置属性,具体请参考Hibernate中文手册。
    • Hibernate配置文件可以有两种格式,一种是hibernate.properties,另一种是hibernate.cfg.xml。后者稍微方便一些,当增加hbm映射文件的时候,可以直接在hibernate.cfg.xml里面增加,不必像hibernate.properties必须在初始化代码中加入。针对不同的应用,Hibernate配置文件的存放位置也不相同,如果是WEB应用,则将配置文件放到WEB-INF/classeses/目录下;如果是JRE环境下,则将配置文件放到根目录下。
    • Hibernate配置属性的简要的说明(在hibernate.properties里有模版,可修改操作)
      • hibernate.query.substitutions true 1, false 0, yes 'Y', no 'N'
        这个配置意思是当你在Hibernate里面输入true的时候,Hibernate会转化为0插入数据库,当你在Hibernate里面输入false的时候,Hibernate会转化为1插入数据库,后面的Y,N同理
      • 数据库操作的有关属性,以MySql为例进行说明
        hibernate.dialect net.sf.hibernate.dialect.MySQLDialect
        hibernate.connection.driver_class org.gjt.mm.mysql.Driver
        hibernate.connection.driver_class com.mysql.jdbc.Driver
        hibernate.connection.url jdbc:mysql:///test
        hibernate.connection.username root
        hibernate.connection.password
        hibernate.dialect针对不同的数据库声明不同的Hibernate方言的类名,可以让Hibernate使用某些特定数据库平台的特性。
        hibernate.connection.driver_class是JDBC的驱动
        hibernate.connection.url是JDBC的URL
        hibernate.connection.username数据库用户名
        hibernate.connection.password数据库用户密码
      • hibernate.connection.pool_size 1和hibernate.statement_cache.size 25
        这是Hibernate自带的连接池的配置参数,在默认情况下将采用。Hibernate这个连接池是非常原始非常简单的连接池,如果你在项目中用Hibernate的话,建议首选App Server的连接池,次选Hibernate带的DBCP连接池。自带的连接池应该做为末选。
      • hibernate.show_sql true
        是否将Hibernate发送给数据库的sql显示出来,当你在调试Hibernate的时候,让Hibernate打印sql语句,可以帮助你迅速解决问题。
      • hibernate.connection.isolation 4
        指定数据库的隔离级别,往往不同的数据库有自己定义的隔离级别,未必是Hibernate的设置所能更改的,所以也不必去管它了。
      • hibernate.jdbc.fetch_size 50 和hibernate.jdbc.batch_size 25
        Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数。Fetch Size设的越大,读数据库的次数越少,速度越快;Fetch Size越小,读数据库的次数越多,速度越慢。不过并不是所有的数据库都支持Fetch Size特性,例如MySQL就不支持。
        Batch Size是设定对数据库进行批量删除,批量更新和批量插入的时候的批次大小,有点相当于设置Buffer缓冲区大小的意思。Batch Size越大,批量操作的向数据库发送sql的次数越少,速度就越快。
      • hibernate.jdbc.use_scrollable_resultset true
        设定是否可以使用JDBC2.0规范的可滚动结果集,这对Hibernate的分页显示有一定的作用,默认就可以了。
      • hibernate.cglib.use_reflection_optimizer false
        默认打开,启用cglib反射优化。cglib是用来在Hibernate中动态生成PO字节码的,打开优化可以加快字节码构造的速度。
      • hibernate.transaction.factory_class net.sf.hibernate.transaction.JTATransactionFactory
        hibernate.transaction.factory_class net.sf.hibernate.transaction.JDBCTransactionFactory
        Hibernate是对JDBC的轻量级对象封装,Hibernate本身是不具备Transaction处理功能的,Hibernate的Transaction实际上是底层的JDBC Transaction的封装,或者是JTA Transaction的封装。如果你什么都不配置,默认情况下使用JDBCTransaction。
  5. 备注
    这里只是介绍了一些常用的Hibernate属性,关于其它方面的属性配置,请参阅"HIBERNATE中文参考手册",在我的链接中有Hibernate的中文网站Hibernate的官方网站
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值