Hibernate教程-Hibernate 配置
![](https://wx.javatiku.cn/j/j301-t.jpg)
由于 Hibernate 可以在不同环境中运行,它需要广泛的配置参数。这些配置包含提供给 Java 类不同功能的映射信息。通常,我们在配置文件中提供与数据库相关的映射。Hibernate 允许在 XML 文件(如 hibernate.cfg.xml)或属性文件(如 hibernate.properties)中提供配置。
Configuration 类的实例允许向应用程序指定属性和映射。此类还会构建一个不可变的 SessionFactory。
我们可以通过直接实例化 Configuration 类并在配置文件中指定映射来获取 Configuration 类的实例。如果映射文件位于类路径中,请使用 addResource() 方法。
Configuration cfg = new Configuration()
.addResource("employee.hbm.xml")
让我们看看在 XML 文件和属性文件中提供配置的示例。
基于 XML 的配置
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 5.3//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-5.3.dtd">
<hibernate-configuration>
<session-factory>
<property name="hbm2ddl.auto">update</property>
<property name="dialect">org.hibernate.dialect.Oracle9Dialect</property>
<property name="connection.url">jdbc:oracle:thin:@localhost:1521:xe</property>
<property name="connection.username">system</property>
<property name="connection.password">jtp</property>
<property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
</session-factory>
</hibernate-configuration>
属性文件配置
hibernate.dialect= org.hibernate.dialect.Oracle9Dialect
hibernate.connection.driver_class= oracle.jdbc.driver.OracleDriver
hibernate.connection.url= jdbc:oracle:thin:@localhost:1521:xe
hibernate.connection.username= system
hibernate.connection.password=jtp
hibernate.show_sql=true
hibernate.hbm2ddl=update
Hibernate 配置属性
Hibernate JDBC 属性
属性 | 描述 |
---|---|
hibernate.connection.driver_class | 表示 JDBC 驱动类。 |
hibernate.connection.url | 表示 JDBC URL。 |
hibernate.connection.username | 表示数据库用户名。 |
hibernate.connection.password | 表示数据库密码。 |
hibernate.connection.pool_size | 表示连接池中可用的最大连接数。 |
Hibernate 数据源属性
属性 | 描述 |
---|---|
hibernate.connection.datasource | 表示 Hibernate 用于数据库属性的数据源 JNDI 名称。 |
hibernate.jndi.url | 可选。表示 JNDI 提供者的 URL。 |
hibernate.jndi.class | 可选。表示 JNDI InitialContextFactory 的类。 |
Hibernate 配置属性
属性 | 描述 |
---|---|
hibernate.dialect | 表示 Hibernate 用于生成特定关系数据库的 SQL 语句的数据库类型。 |
hibernate.show_sql | 用于在控制台显示执行的 SQL 语句。 |
hibernate.format_sql | 用于在日志和控制台中打印格式化的 SQL。 |
hibernate.default_catalog | 在生成的 SQL 中使用给定的目录限定未限定的表名。 |
hibernate.default_schema | 在生成的 SQL 中使用给定的模式限定未限定的表名。 |
hibernate.session_factory_name | 在创建后,SessionFactory 接口自动绑定到此名称的 JNDI 中。 |
hibernate.default_entity_mode | 为从此 SessionFactory 打开的所有会话设置实体表示的默认模式。 |
hibernate.order_updates | 根据更新的主键排序 SQL 更新。 |
hibernate.use_identifier_rollback | 如果启用,在删除对象时,生成的标识符属性将重置为默认值。 |
hibernate.generate_statistics | 如果启用,Hibernate 将收集用于性能调优的统计信息。 |
hibernate.use_sql_comments | 如果启用,Hibernate 在 SQL 中生成注释。这有助于调试。 |
Hibernate 缓存属性
属性 | 描述 |
---|---|
hibernate.cache.provider_class | 表示自定义 CacheProvider 的类名。 |
hibernate.cache.use_minimal_puts | 用于优化二级缓存。它会最小化写入,但会增加读取频率。 |
hibernate.cache.use_query_cache | 用于启用查询缓存。 |
hibernate.cache.use_second_level_cache | 用于禁用二级缓存,默认情况下二级缓存对指定映射的类启用。 |
hibernate.cache.query_cache_factory | 表示自定义 QueryCache 接口的类名。 |
hibernate.cache.region_prefix | 指定用于二级缓存区域名称的前缀。 |
hibernate.cache.use_structured_entries | 使 Hibernate 能以更人性化的格式存储在二级缓存中的数据。 |
Hibernate 事务属性
属性 | 描述 |
---|---|
hibernate.transaction.factory_class | 表示与 Hibernate Transaction API 一起使用的 TransactionFactory 的类名。 |
hibernate.transaction.manager_lookup_class | 表示 TransactionManagerLookup 的类名。启用 JVM 级缓存时需要。 |
hibernate.transaction.flush_before_completion | 如果启用,会在事务的完成前阶段自动刷新会话。 |
hibernate.transaction.auto_close_session | 如果启用,会在事务完成后阶段自动关闭会话。 |
其他 Hibernate 属性
属性 | 描述 |
---|---|
hibernate.connection.provider_class | 表示提供 JDBC 连接给 Hibernate 的自定义 ConnectionProvider 的类名。 |
hibernate.connection.isolation | 用于设置 JDBC 事务隔离级别。 |
hibernate.connection.autocommit | 启用 JDBC 连接池连接的自动提交。但不推荐使用。 |
hibernate.connection.release_mode | 指定 Hibernate 何时释放 JDBC 连接。 |
hibernate.current_session_context_class | 提供 "current" Session 的自定义范围策略。 |
hibernate.hbm2ddl.auto | 在创建 SessionFactory 时自动在数据库中生成模式。 |