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
?
JDBC 和连接(connection)属性
?
属性名
用途
hibernate.jdbc.fetch_size
非零值,指定?JDBC?抓取数量的大小(调用Statement.setFetchSize())。
hibernate.jdbc.batch_size
非零值,允许?Hibernate?使用?JDBC2?的批量更新。?例如:建议取?5到?
30?之间的值
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.
例如: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
在数据插入数据库之后,允许使用?JDBC3PreparedStatement.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?Sessions?returned?fromSessionFactory.openSession.?
For?Sessions?obtained?through?SessionFactory.getCurrentSession,?
theCurrentSessionContext?implementation?configured?for?use?controls?the?
connection?release?mode?for?those?Sessions.?See?第?2.5?节?“上下文相关的会话(Contextual?Session)”
hibernate.connection.<propertyName>
把?JDBC?属性?<propertyName>?传递给DriverManager.getConnection()。
hibernate.jndi.<propertyName>
把?<propertyName>?属性传递给?JNDI?InitialContextFactory。
?
缓存属性
?
属性名
用途
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.transaction.factory_class
一个?TransactionFactory?的类名,用于?HibernateTransaction?
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
?