Hibernate可选的配置属性
Hibernate 配置属性
属性名 | 用途 |
---|---|
hibernate.dialect |
允许 Hibernate 针对特定的关系数据库生成优化的 SQL 的org.hibernate.dialect.Dialect 的类名。
例如: 在大多数情况下,Hibernate 可以根据 JDBC 驱动返回的 |
hibernate.show_sql |
输出所有 SQL 语句到控制台。有一个另外的选择是把 org.hibernate.SQL 这个 log category设为 debug 。
例如: |
hibernate.format_sql |
在 log 和 console 中打印出更漂亮的 SQL。
例如: |
hibernate.default_schema |
在生成的 SQL 中,将给定的 schema/tablespace 附加于非全限定名的表名上。
例如: |
hibernate.default_catalog |
在生成的 SQL 中,将给定的 catalog 附加于非全限定名的表名上。
例如: |
hibernate.session_factory_name |
org.hibernate.SessionFactory 创建后,将自动使用这个名字绑定到 JNDI 中。
例如: |
hibernate.max_fetch_depth |
为单向关联(一对一,多对一)的外连接抓取(outer join fetch)树设置最大深度。值为 0 意味着将关闭默认的外连接抓取。
例如: 建议在 |
hibernate.default_batch_fetch_size |
为 Hibernate 关联的批量抓取设置默认数量。
例如:建议的取值为 |
hibernate.default_entity_mode |
为由这个 SessionFactory 打开的所有 Session 指定默认的实体表现模式。
取值 |
hibernate.order_updates |
强制 Hibernate 按照被更新数据的主键,为 SQL 更新排序。这么做将减少在高并发系统中事务的死锁。
例如: |
hibernate.generate_statistics |
如果开启,Hibernate 将收集有助于性能调节的统计数据。
例如: |
hibernate.use_identifier_rollback |
如果开启,在对象被删除时生成的标识属性将被重设为默认值。
例如: |
hibernate.use_sql_comments |
如果开启,Hibernate 将在 SQL 中生成有助于调试的注释信息,默认值为false 。
例如: |
Hibernate JDBC 和连接(connection)属性
属性名 | 用途 |
---|---|
hibernate.jdbc.fetch_size |
非零值,指定 JDBC 抓取数量的大小(调用Statement.setFetchSize() )。 |
hibernate.jdbc.batch_size |
非零值,允许 Hibernate 使用 JDBC2 的批量更新。
例如:建议取 |
hibernate.jdbc.batch_versioned_data |
Set this property to true if your JDBC driver returns correct row counts from executeBatch() .
It is usually safe to turn this option on. Hibernate will then use batched DML for automatically versioned data. Defaults to false .
例如: |
hibernate.jdbc.factory_class |
选择一个自定义的 Batcher 。多数应用程序不需要这个配置属性。
例如: |
hibernate.jdbc.use_scrollable_resultset |
允许 Hibernate 使用 JDBC2 的可滚动结果集。只有在使用用户提供的 JDBC 连接时,这个选项才是必要的,否则 Hibernate 会使用连接的元数据。
例如: |
hibernate.jdbc.use_streams_for_binary |
在 JDBC 读写 binary 或 serializable 的类型时使用流(stream)(系统级属性)。
例如: |
hibernate.jdbc.use_get_generated_keys |
在数据插入数据库之后,允许使用 JDBC3PreparedStatement.getGeneratedKeys() 来获取数据库生成的 key(键)。需要 JDBC3+ 驱动和 JRE1.4+,如果你的数据库驱动在使用 Hibernate 的标识生成器时遇到问题,请将此值设为
false。默认情况下将使用连接的元数据来判定驱动的能力。
例如: |
hibernate.connection.provider_class |
自定义 ConnectionProvider 的类名,此类用来向 Hibernate 提供 JDBC 连接。
例如: |
hibernate.connection.isolation |
设置 JDBC 事务隔离级别。查看 java.sql.Connection 来了解各个值的具体意义,但请注意多数数据库都不支持所有的隔离级别。
例如: |
hibernate.connection.autocommit |
允许被缓存的 JDBC 连接开启自动提交(autocommit)(不推荐)。
例如: |
hibernate.connection.release_mode |
指定 Hibernate 在何时释放 JDBC 连接。默认情况下,直到 Session 被显式关闭或被断开连接时,才会释放 JDBC 连接。对于应用程序服务器的 JTA 数据源,你应当使用 after_statement ,这样在每次 JDBC 调用后,都会主动的释放连接。对于非
JTA 的连接,使用after_transaction 在每个事务结束时释放连接是合理的。auto 将为 JTA 和 CMT
事务策略选择 after_statement ,为JDBC事务策略选择after_transaction 。
例如: This setting only affects |
hibernate.connection.<propertyName> |
把 JDBC 属性 <propertyName> 传递给DriverManager.getConnection() 。 |
hibernate.jndi.<propertyName> |
把 <propertyName> 属性传递给 JNDI InitialContextFactory 。 |
Hibernate 缓存属性
属性名 | 用途 |
---|---|
hibernate.cache.provider_class |
自定义的 CacheProvider 的类名。
例如: |
hibernate.cache.use_minimal_puts |
以频繁的读操作为代价,优化二级缓存来最小化写操作。在 Hibernate3 中,这个设置对的集群缓存非常有用,对集群缓存的实现而言,默认是开启的。
例如: |
hibernate.cache.use_query_cache |
允许查询缓存,个别查询仍然需要被设置为可缓存的。
例如: |
hibernate.cache.use_second_level_cache |
能用来完全禁止使用二级缓存。对那些在类的映射定义中指定<cache> 的类,会默认开启二级缓存。
例如: |
hibernate.cache.query_cache_factory |
自定义实现 QueryCache 接口的类名,默认为内建的StandardQueryCache 。
例如: |
hibernate.cache.region_prefix |
二级缓存区域名的前缀。
例如: |
hibernate.cache.use_structured_entries |
强制 Hibernate 以更人性化的格式将数据存入二级缓存。
例如: |
Hibernate 事务属性
属性名 | 用途 |
---|---|
hibernate.transaction.factory_class |
一个 TransactionFactory 的类名,用于 HibernateTransaction API(默认为 JDBCTransactionFactory )。
例如: |
jta.UserTransaction |
一个 JNDI 名字,被 JTATransactionFactory 用来从应用服务器获取 JTA UserTransaction 。
例如: |
hibernate.transaction.manager_lookup_class |
一个 TransactionManagerLookup 的类名 — 当使用 JVM 级缓存,或在 JTA 环境中使用 hilo 生成器的时候需要该类。
例如: |
hibernate.transaction.flush_before_completion |
If enabled, the session will be automatically flushed during the before completion phase of the transaction. Built-in and automatic session context management is preferred, see 第 2.5 节
“上下文相关的会话(Contextual Session)”.
例如: |
hibernate.transaction.auto_close_session |
If enabled, the session will be automatically closed during the after completion phase of the transaction. Built-in and automatic session context management is preferred, see 第 2.5 节
“上下文相关的会话(Contextual Session)”.
例如: |
其他属性
属性名 | 用途 |
---|---|
hibernate.current_session_context_class |
Supply a custom strategy for the scoping of the "current" Session . See 第 2.5 节
“上下文相关的会话(Contextual Session)” for more information about the built-in strategies.
例如: |
hibernate.query.factory_class |
选择 HQL 解析器的实现。
例如: |
hibernate.query.substitutions |
将 Hibernate 查询中的符号映射到 SQL 查询中的符号(符号可能是函数名或常量名字)。
例如: |
hibernate.hbm2ddl.auto |
在 SessionFactory 创建时,自动检查数据库结构,或者将数据库 schema 的 DDL 导出到数据库。使用 create-drop 时,在显式关闭 SessionFactory 时,将删除掉数据库
schema。
例如: |
hibernate.bytecode.use_reflection_optimizer |
Enables the use of bytecode manipulation instead of runtime reflection. This is a System-level property and cannot be set in 例如: |
hibernate.bytecode.provider |
Both javassist or cglib can be used as byte manipulation engines; the default is e.g. |
转自:Hibernate官方文档