Hibernate配置文件主要用于配置数据库连接和Hibernate运行时所需的各种属性,这个配置文件应该位于应用程序或Web程序的类文件夹classes中。Hibernate配置文件支持两种形式,一种是xml格式的配置文件,另一种是Java属性文件格式的配置文件,采用“键=值”的形式。建议采用xml格式的配置文件。xml配置文件可以直接对映射文件进行配置,并由Hibernate自动加载,而properties文件则必须在程序中通过编码加载映射文件。
1. 创建Java属性文件格式的配置文件
Hibernate默认的Java属性文件格式的配置文件名称为hibernate.properties,其基本格式如下:
#指定连接数据库使用的SQL方言#
hibernate.dialect=org.hibernate.dialect.SQLServerDialect
#指定连接数据库的驱动程序#
hibernate.connection.driver_class=com.microsoft.jdbc.sqlserver.SQLServerDriver
#指定连接数据库的URL#
hibernate.connection.url=jdbc:microsoft:sqlserver://127.0.0.1:1433;databaseName=数据库名
#指定连接数据库的用户名#
hibernate.connection.username=用户名
#指定连接数据库的密码#
hibernate.connection.password=密码
#指定在执行程序时,是否在控制台上输出SQL语句#
hibernate.show_sql=true
#指定是否按照标准格式在控制台上输出SQL语句#
hibernate.format_sql=true
#指定是否在SQL语句中输出便于调试的注释信息#
hibernate.use_sql_comments=true
hibernate.properties文件中包含了一系列属性的设置值,Hibernate将根据这些属性来连接数据库。
2. 创建xml格式的配置文件
Hibernate默认的xml格式的配置文件名称为hibernate.cfg.xml。下面将以一个典型的连接SQL Server 2000的Hibernate配置文件为例,对xml格式的配置文件进行解析。
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration
PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<!--SessionFactory配置-->
<session-factory>
<!--指定数据库使用的SQL方言。尽管多数关系数据库都支持标准的SQL语言,但是笔者建议在此指定自己的SQL方言。-->
<property name="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</property>
指定连接数据库用的驱动,对于不同的关系数据库,其驱动是不同的,需要根据实际情况修改。
<property name="connection.driver_class">
com.microsoft.jdbc.sqlserver.SQLServerDriver
</property>
<!--指定连接数据库的路径,对于不同的关系数据库,其URL路径是不同的,需要根据实际情况修改。-->
<property name="connection.url">
jdbc:microsoft:sqlserver://127.0.0.1:1433;databaseName=数据库名
</property>
<!-- 指定连接数据库的用户名。-->
<property name="connection.username">用户名</property>
<!-- 指定连接数据库的密码;如果密码为空,则在“密码”的位置不写任何字符。 -->
<property name="connection.password">密码</property>
指定当程序运行时是否在控制台输出SQL语句。当show_sql属性为true时,表示在控制台输出SQL语句,默认为false。建议在调试程序时设为true,发布程序之前再改为false,因为输出SQL语句会影响程序的运行速度。
<property name="show_sql">true</property>
<!-- 指定当程序运行时,是否按照标准格式在控制台上输出SQL语句。当format_sql属性为true时,表示按照标准格式在控制台上输出SQL语句,默认为false。建议在调试程序时设为true,发布程序之前再改为false。该属性只有当show_sql属性为true时才有效。-->
<property name="format_sql">true</property>
<!-- 指定当程序运行时,是否在SQL语句中输出便于调试的注释信息。当show_sql属性为true时,表示输出注释信息,默认为false。建议在调试程序时设为true,发布程序之前再改为false。该属性只有当show_sql属性为true时才有效。 -->
<property name="use_sql_comments">true</property>
<!-- 指定持久化类映射文件的位置,由包名与映射文件组成,包名与映射文件之间用“/”分隔。 -->
<mapping resource="com/BranchForm.hbm.xml"/>
</session-factory>
</hibernate-configuration>
在上面的配置文件hibernate.cfg.xml中,包含了一系列的属性元素,Hibernate将根据这些属性元素连接数据库。
3. Hibernate配置属性
Hibernate 3.2提供的配置属性如表2.1所示。
表2.1 Hibernate 3.2提供的配置属性表
属 性 | 说 明 |
hibernate.dialect | 连接数据库使用的SQL方言 |
hibernate.show_sql | 指定是否在控制台上输出SQL语句,值为true或false |
hibernate.format_sql | 指定是否按照标准格式在控制台上输出SQL语句,值为true或false |
hibernate.default_schema | 在生成的SQL中,将给定的schema/tablespace附加于非全限定名的表名上 |
| |
hibernate.default_catalog | 在生成的SQL中,将给定的catalog附加于非全限定名的表名上 |
hibernate.session_factory_name | SessionFactory创建后,将自动使用这个名字绑定到JNDI中 |
hibernate.max_fetch_depth | 为单向关联(一对一、多对一)的外连接抓取(Outer Join Fetch)树设置最大深度,值为0意味着将关闭默认的外连接抓取。建议在0到3之间取值 |
hibernate.default_batch_fetch_size | 为Hibernate关联的批量抓取设置默认数量。建议使用4、8或16 |
hibernate.default_entity_mode | 为由SessionFactory打开的所有Session指定默认的实体表现模式 |
hibernate.order_updates | 强制Hibernate按照被更新数据的主键为SQL更新排序。这么做将减少在高并发系统中事务的死锁。值为true或false |
hibernate.generate_statistics | 用于指定Hibernate是否收集有助于性能调节的统计数据,值为true或false,默认值为false |
hibernate.use_identifer_rollback | 用于指定在对象被删除时,生成的标识属性是否被重设为默认值,值为true或false,默认值为false |
hibernate.use_sql_comments | 用于指定是否在SQL语句中输出便于调试的注释信息,值为true或false,默认值为false |