天天看點

hibernate properties 詳細說明

Hibernate配置屬性

hibernate.dialect:一個Hibernate Dialect類名允許Hibernate針對特定的關系資料庫生成優化的SQL。取值full.classname.of.Dialect(詳解見下)

hibernate.show_sql:輸出所有SQL語句到控制台,有一個另外的選擇是把org.hibernate.SQL這個log category設為debug。 eg:true|false

hibernate.format_sql:在log和console中列印出更漂亮的SQL。取值 true|false

hibernate.default_schema:在生成的SQL中,将給定的scheam/tablespace附加于非全限定名的表名上,取值SCHEMA_NAME

hibernate.default_catelog:在生成的SQL中,将給定的catalog附加于非全限定名的表名上。取值CATALOG_NAME.

hibernate.session_factory_name: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_identifer_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.tatch_versioned_data:如果你想讓你的JDBC驅動從executeBatch()傳回正确的行計數,那麼将此屬性設定為true(開啟這個選項通常是安全的)同時Hibernate将為自動版本化的資料使用批量DML。預設為false。EG: true|false

hibernate.jdbc.factory_class:選擇一個自定義的Batcher.多數應用程式不需要配置這個屬性。eg: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.  取值 on_close | after_transaction | after_statement | auto 

hibernate.connection:将JDBC屬性propertyName傳遞到DriverManager.getConnection()中去。

hibernate.jndi:将屬性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  能用來完全禁止使用二級緩存.  對那些在類的映射定義中指定的類,會預設開啟二級緩存 .  取值  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  如果開啟, session 在事務完成後将被自動清洗 (flush) 。 現在更好的方法是使用自動 session 上下文管理。取值  true | false  

hibernate.transaction.auto_close_session  如果開啟, session 在事務完成後将被自動關閉。 現在更好的方法是使用自動 session 上下文管理。取值  true | false  

=================================================================================================

Hibernate其他屬性  

hibernate.current_session_context_class  為" 目前 " Session 指定一個 ( 自定義的 ) 政策。eg. jta | thread | custom.Class  

hibernate.query.factory_class  選擇HQL 解析器的實作 .  取值 org.hibernate.hql.ast.ASTQueryTranslatorFactory or org.hibernate.hql.classic.ClassicQueryTranslatorFactory  

hibernate.query.substitutions  将Hibernate 查詢中的符号映射到 SQL 查詢中的符号  ( 符号可能是函數名或常量名字).  取值  hqlLiteral=SQL_LITERAL, hqlFunction=SQLFUNC  

hibernate.hbm2ddl.auto  在SessionFactory 建立時,自動檢查資料庫結構,或者将資料庫 schema 的 DDL 導出到資料庫 .  使用  create-drop 時 , 在顯式關閉 SessionFactory 時,将 drop 掉資料庫 schema.  取值 validate | update | create | create-drop  

hibernate.cglib.use_reflection_optimizer  開啟CGLIB 來替代運作時反射機制 ( 系統級屬性 ).  反射機制有時在除錯時比較有用 .  注意即使關閉這個優化 , Hibernate 還是需要 CGLIB.  你不能在 hibernate.cfg.xml 中設定此屬性 .  取值 true | false 

======================================================================================

SQL方言 

你應當總是為你的資料庫将hibernate.dialect 屬性設定成正确的  org.hibernate.dialect.Dialect 子類 .  如果你指定一種方言, Hibernate 将為上面列出的一些屬性使用合理的預設值 ,  為你省去了手工指定它們的功夫 .  

Hibernate SQL方言  (hibernate.dialect)  

RDBMS 方言  

DB2 org.hibernate.dialect.DB2Dialect  

DB2 AS/400 org.hibernate.dialect.DB2400Dialect  

DB2 OS390 org.hibernate.dialect.DB2390Dialect  

PostgreSQL org.hibernate.dialect.PostgreSQLDialect  

MySQL org.hibernate.dialect.MySQLDialect  

MySQL with InnoDB org.hibernate.dialect.MySQLInnoDBDialect  

MySQL with MyISAM org.hibernate.dialect.MySQLMyISAMDialect  

Oracle (any version) org.hibernate.dialect.OracleDialect  

Oracle 9i/10g org.hibernate.dialect.Oracle9Dialect  

Sybase org.hibernate.dialect.SybaseDialect  

Sybase Anywhere org.hibernate.dialect.SybaseAnywhereDialect  

Microsoft SQL Server org.hibernate.dialect.SQLServerDialect  

SAP DB org.hibernate.dialect.SAPDBDialect  

Informix org.hibernate.dialect.InformixDialect  

HypersonicSQL org.hibernate.dialect.HSQLDialect  

Ingres org.hibernate.dialect.IngresDialect  

Progress org.hibernate.dialect.ProgressDialect  

Mckoi SQL org.hibernate.dialect.MckoiDialect  

Interbase org.hibernate.dialect.InterbaseDialect  

Pointbase org.hibernate.dialect.PointbaseDialect  

FrontBase org.hibernate.dialect.FrontbaseDialect  

Firebird org.hibernate.dialect.FirebirdDialect

==================================================================================================

Hibernate日志類别 

org.hibernate.SQL  在所有SQL DML 語句被執行時為它們記錄日志  

org.hibernate.type  為所有JDBC 參數記錄日志  

org.hibernate.tool.hbm2ddl  在所有SQL DDL 語句執行時為它們記錄日志  

org.hibernate.pretty  在session 清洗 (flush) 時,為所有與其關聯的實體 ( 最多 20 個 ) 的狀态記錄日志  

org.hibernate.cache  為所有二級緩存的活動記錄日志  

org.hibernate.transaction  為事務相關的活動記錄日志  

org.hibernate.jdbc  為所有JDBC 資源的擷取記錄日志  

org.hibernate.hql.AST  在解析查詢的時候, 記錄 HQL 和 SQL 的 AST 分析日志  

org.hibernate.secure  為JAAS 認證請

繼續閱讀