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 認證請