您的位置:首页 > 其它

Hibernate可选的配置属性

2012-04-19 10:50 357 查看
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官方文档
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: