由于 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 时自动在数据库中生成模式。

标签: Hibernate, Hibernate教程, Hibernate框架, Hibernate框架设计, Hibernate初级教程, Hibernate框架用法, Hibernate指南, Hibernate入门, Hibernate中级教程, Hibernate进阶教程, Hibernate高级教程, Hibernate下载