轉載地址:http://blog.sina.com.cn/s/blog_692d0a650100xyqx.htmlhtml
Hibernate配置屬性java
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:爲單向關聯(一對1、多對一)的外鏈接抓取(outer join fetch)樹設置最大深度.值爲0意味着將關閉默認的外鏈接抓取。取值建議在0到3之間。
hibernate.default_batch_fetch_size:爲Hibernate關聯的批量抓取設置默認數量。取值建議爲四、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 認證請求作日誌
org.hibernate
爲任何Hibernate 相關信息作日誌 ( 信息量較大 , 但對查錯很是有幫助 )
======================================================================================
JTA TransactionManagers
Transaction工廠類 應用程序服務器
org.hibernate.transaction.JBossTransactionManagerLookup JBoss
org.hibernate.transaction.WeblogicTransactionManagerLookup Weblogic
org.hibernate.transaction.WebSphereTransactionManagerLookup WebSphere
org.hibernate.transaction.WebSphereExtendedJTATransactionLookup WebSphere 6
org.hibernate.transaction.OrionTransactionManagerLookup Orion
org.hibernate.transaction.ResinTransactionManagerLookup Resin
org.hibernate.transaction.JOTMTransactionManagerLookup JOTM
org.hibernate.transaction.JOnASTransactionManagerLookup JOnAS
org.hibernate.transaction.JRun4TransactionManagerLookup JRun4
org.hibernate.transaction.BESTransactionManagerLookup