•Hibernate 配置文件主要用于配置数据库连接和Hibernate运行时所需的各种属性
•每个 Hibernate配置文件对应一个Configuration对象
•Hibernate配置文件可以有两种格式:
–hibernate.properties
–hibernate.cfg.xml
这里我只介绍XML文件格式的配置文件方式
该种配置方式必须将文件名命名为hibernate.cfg.xml
且位置需放置在src目录下,否则可能会造成初始化错误

文件名和文件路径的问题处理好之后,我们可以上手开始进行配置了。
1.首先我们要进行数据库的相关信息配置,这也是数据库连接离不开的
即进行如下信息的配置
•JDBC 连接属性
–connection.url:数据库URL
–connection.username:数据库用户名
–connection.password:数据库用户密码
–connection.driver_class:数据库JDBC驱动
–dialect:配置数据库的方言,根据底层的数据库不同产生不同的sql语句,Hibernate会针对数据库的特性在访问时进行优化
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/*</property><!--*处为所要连接的数据库名称-->
<property name="connection.username">root</property>
<property name="connection.password">******</property> <!-- 配置数据库方言
在MySQL里面实现分页关键字limit,只能使用MySQL里
在oracle数据库,实现发页用rownum
让hibernate框架识别不同数据库的自己特有的语句
-->
<property name="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>•C3P0 数据库连接池属性
–hibernate.c3p0.max_size:数据库连接池的最大连接数
–hibernate.c3p0.min_size:数据库连接池的最小连接数
–hibernate.c3p0.timeout: 数据库连接池中连接对象在多长时间没有使用过后,就应该被销毁
–hibernate.c3p0.max_statements: 缓存 Statement对象的数量
–hibernate.c3p0.idle_test_period: 表示连接池检测线程多长时间检测一次池内的所有链接对象是否超时.连接池本身不会把自己从连接池中移除,而是专门有一个线程按照一定的时间间隔来做这件事,这个线程通过比较连接对象最后一次被使用时间和当前时间的时间差来和timeout做对比,进而决定是否销毁这个连接对象。
–hibernate.c3p0.acquire_increment:当数据库连接池中的连接耗尽时,同一时刻获取多少个数据库连接
2.其次则是一些当实际开发时根据需要进行的配置
–show_sql:是否将运行期生成的SQL输出到日志以供调试。取值true| false
–format_sql:是否将SQL转化为格式良好的SQL. 取值 true| false
–hbm2ddl.auto:在启动和停止时自动地创建,更新或删除数据库模式。取值create| update | create-drop | validate
•hibernate.jdbc.fetch_size:实质是调用Statement.setFetchSize()方法设定 JDBC的 Statement读取数据的时候每次从数据库中取出的记录条数。
–例如一次查询1万条记录,对于Oracle的JDBC驱动来说,是不会1次性把1万条取出来的,而只会取出fetchSize条数,当结果集遍历完了这些记录以后,再去数据库取fetchSize条数据。因此大大节省了无谓的内存消耗。FetchSize设的越大,读数据库的次数越少,速度越快;FetchSize越小,读数据库的次数越多,速度越慢。Oracle数据库的JDBC驱动默认的FetchSize = 10,是一个保守的设定,根据测试,当FetchSize=50时,性能会提升1倍之多,当fetchSize=100,性能还能继续提升20%,FetchSize继续增大,性能提升的就不显著了。并不是所有的数据库都支持FetchSize特性,例如MySQL就不支持
•hibernate.jdbc.batch_size:设定对数据库进行批量删除,批量更新和批量插入的时候的批次大小,类似于设置缓冲区大小的意思。batchSize越大,批量操作时向数据库发送sql的次数越少,速度就越快。
–测试结果是当BatchSize=0的时候,使用Hibernate对Oracle数据库删除1万条记录需要25秒,BatchSize = 50的时候,删除仅仅需要5秒!Oracle数据库batchSize=30的时候比较合适。
例如:
<!-- 输出底层sql语句 -->
<property name="show_sql">true</property>
<!-- 输出底层sql语句格式 -->
<property name="format_sql">true</property>
<!-- hibernate帮创建表,需要配置之后
update:如果已经表存在,则更新,不存在,则创建
-->
<property name="hbm2ddl.auto">update</property>
3.进行对象映射文件(*.hbm.xml)的配置
一个核心配置文件可同时配置多个对象映射文件
需注意的是,对象映射文件若是放在src下,则可直接写文件名
<mapping resource="Customer.hbm.xml"/>
<mapping resource="Linkman.hbm.xml"/>若是放在src下的包中,则需要写上全路径名
<mapping resource="com/hibernate/entity/Customer.hbm.xml"/>若对象映射文件的路径和hibernate.cfg.xml文件中的配置不符合以上规范,则同样会出现初始化错误

本文详细介绍了Hibernate配置文件的设置方法,包括数据库连接配置、C3P0连接池属性配置及对象映射文件配置等内容。
4310





