您的位置:首页 > 数据库

Hibernate可选的配置属性

2012-04-19 10:50 344 查看
 Hibernate 配置属性

属性名用途
hibernate.dialect允许 Hibernate 针对特定的关系数据库生成优化的 SQL 的
org.hibernate.dialect.Dialect
 的类名。
例如:
full.classname.of.Dialect


在大多数情况下,Hibernate 可以根据 JDBC 驱动返回的 
JDBC metadata
选择正确的 
org.hibernate.dialect.Dialect
 实现。

hibernate.show_sql输出所有 SQL 语句到控制台。有一个另外的选择是把 
org.hibernate.SQL
这个 log category设为 
debug

例如:
true
 | 
false


hibernate.format_sql在 log 和 console 中打印出更漂亮的 SQL。 
例如:
true
 | 
false

hibernate.default_schema在生成的 SQL 中,将给定的 schema/tablespace 附加于非全限定名的表名上。 
例如:
SCHEMA_NAME

hibernate.default_catalog在生成的 SQL 中,将给定的 catalog 附加于非全限定名的表名上。 
例如:
CATALOG_NAME

hibernate.session_factory_name
org.hibernate.SessionFactory
 创建后,将自动使用这个名字绑定到 JNDI 中。
例如:
jndi/composite/name


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 指定默认的实体表现模式。
取值
dynamic-map
dom4j
pojo


hibernate.order_updates强制 Hibernate 按照被更新数据的主键,为 SQL 更新排序。这么做将减少在高并发系统中事务的死锁。 
例如:
true
 | 
false

hibernate.generate_statistics如果开启,Hibernate 将收集有助于性能调节的统计数据。 
例如:
true
 |
false

hibernate.use_identifier_rollback如果开启,在对象被删除时生成的标识属性将被重设为默认值。 
例如:
true
false

hibernate.use_sql_comments如果开启,Hibernate 将在 SQL 中生成有助于调试的注释信息,默认值为
false

例如:
true
 | 
false


Hibernate JDBC 和连接(connection)属性

属性名用途
hibernate.jdbc.fetch_size非零值,指定 JDBC 抓取数量的大小(调用
Statement.setFetchSize()
)。
hibernate.jdbc.batch_size非零值,允许 Hibernate 使用 JDBC2 的批量更新。 
例如:建议取 
5
到 
30
 之间的值
hibernate.jdbc.batch_versioned_dataSet 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
.
例如:
true
 | 
false


hibernate.jdbc.factory_class选择一个自定义的 
Batcher
。多数应用程序不需要这个配置属性。
例如:
classname.of.Batcher


hibernate.jdbc.use_scrollable_resultset允许 Hibernate 使用 JDBC2 的可滚动结果集。只有在使用用户提供的 JDBC 连接时,这个选项才是必要的,否则 Hibernate 会使用连接的元数据。 
例如:
true
 | 
false

hibernate.jdbc.use_streams_for_binary在 JDBC 读写 
binary
 或 
serializable
 的类型时使用流(stream)(系统级属性)。
例如:
true
 | 
false


hibernate.jdbc.use_get_generated_keys在数据插入数据库之后,允许使用 JDBC3
PreparedStatement.getGeneratedKeys()
 来获取数据库生成的 key(键)。需要 JDBC3+ 驱动和 JRE1.4+,如果你的数据库驱动在使用 Hibernate 的标识生成器时遇到问题,请将此值设为
false。默认情况下将使用连接的元数据来判定驱动的能力。
例如:
true | false


hibernate.connection.provider_class自定义 
ConnectionProvider
 的类名,此类用来向 Hibernate 提供 JDBC 连接。
例如:
classname.of.ConnectionProvider


hibernate.connection.isolation设置 JDBC 事务隔离级别。查看 
java.sql.Connection
 来了解各个值的具体意义,但请注意多数数据库都不支持所有的隔离级别。
例如:
1, 2, 4, 8


hibernate.connection.autocommit允许被缓存的 JDBC 连接开启自动提交(autocommit)(不推荐)。
例如:
true
 | 
false

hibernate.connection.release_mode指定 Hibernate 在何时释放 JDBC 连接。默认情况下,直到 Session 被显式关闭或被断开连接时,才会释放 JDBC 连接。对于应用程序服务器的 JTA 数据源,你应当使用 
after_statement
,这样在每次 JDBC 调用后,都会主动的释放连接。对于非
JTA 的连接,使用
after_transaction
 在每个事务结束时释放连接是合理的。
auto
 将为 JTA 和 CMT
事务策略选择 
after_statement
,为JDBC事务策略选择
after_transaction

例如:
auto
 (默认) | 
on_close
 | 
after_transaction
 |
after_statement


This setting only affects 
Session
s returned from
SessionFactory.openSession
.
For 
Session
s obtained through 
SessionFactory.getCurrentSession
,
the
CurrentSessionContext
 implementation configured for use controls the connection release mode for those 
Session
s.
See 第 2.5 节
“上下文相关的会话(Contextual Session)”

hibernate.connection.<propertyName>把 JDBC 属性 <propertyName> 传递给
DriverManager.getConnection()
hibernate.jndi.<propertyName>把 <propertyName> 属性传递给 JNDI 
InitialContextFactory
 Hibernate 缓存属性

属性名用途
hibernate.cache.provider_class
自定义的 
CacheProvider
 的类名。
例如:
classname.of.CacheProvider


hibernate.cache.use_minimal_puts
以频繁的读操作为代价,优化二级缓存来最小化写操作。在 Hibernate3 中,这个设置对的集群缓存非常有用,对集群缓存的实现而言,默认是开启的。 
例如:
true | false

hibernate.cache.use_query_cache
允许查询缓存,个别查询仍然需要被设置为可缓存的。 
例如:
true | false

hibernate.cache.use_second_level_cache
能用来完全禁止使用二级缓存。对那些在类的映射定义中指定
<cache>
 的类,会默认开启二级缓存。
例如:
true | false


hibernate.cache.query_cache_factory
自定义实现 
QueryCache
 接口的类名,默认为内建的
StandardQueryCache

例如:
classname.of.QueryCache


hibernate.cache.region_prefix
二级缓存区域名的前缀。 
例如:
prefix

hibernate.cache.use_structured_entries
强制 Hibernate 以更人性化的格式将数据存入二级缓存。 
例如:
true | false

 Hibernate 事务属性

属性名用途
hibernate.transaction.factory_class
一个 
TransactionFactory
 的类名,用于 Hibernate
Transaction
 API(默认为 
JDBCTransactionFactory
)。
例如:
classname.of.TransactionFactory


jta.UserTransaction
一个 JNDI 名字,被 
JTATransactionFactory
 用来从应用服务器获取 JTA 
UserTransaction

例如:
jndi/composite/name


hibernate.transaction.manager_lookup_class
一个 
TransactionManagerLookup
 的类名 — 当使用 JVM 级缓存,或在 JTA 环境中使用 hilo 生成器的时候需要该类。
例如:
classname.of.TransactionManagerLookup


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)”.
例如:
true
 | 
false


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)”.
例如:
true
 | 
false


 其他属性

属性名用途
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.
例如:
jta
 | 
thread
 | 
managed
 | 
custom.Class


hibernate.query.factory_class
选择 HQL 解析器的实现。 
例如:
org.hibernate.hql.ast.ASTQueryTranslatorFactory
 或
org.hibernate.hql.classic.ClassicQueryTranslatorFactory

hibernate.query.substitutions
将 Hibernate 查询中的符号映射到 SQL 查询中的符号(符号可能是函数名或常量名字)。 
例如:
hqlLiteral=SQL_LITERAL, hqlFunction=SQLFUNC

hibernate.hbm2ddl.auto
在 
SessionFactory
 创建时,自动检查数据库结构,或者将数据库 schema 的 DDL 导出到数据库。使用 
create-drop
 时,在显式关闭 
SessionFactory
 时,将删除掉数据库
schema。
例如:
validate
 | 
update
 | 
create
 | 
create-drop


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.cfg.xml
.
Reflection can sometimes be useful when troubleshooting. Hibernate always requires either CGLIB or javassist even if you turn off the optimizer.
例如:
true
 | 
false


hibernate.bytecode.provider
Both javassist or cglib can be used as byte manipulation engines; the default is 
javassist
.
e.g. 
javassist
 | 
cglib


转自:Hibernate官方文档
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息