1、Hibernate JDBC屬性
屬性名
用途
hibernate.connection.driver_class
jdbc驅動類
hibernate.connection.url
jdbc URL
hibernate.connection.username
資料庫使用者
hibernate.connection.password
資料庫使用者密碼
hibernate.connection.pool_size
連接配接池容量上限數目
注:使用C3P0的properties樣例代碼:
hibernate.connection.driver_class = org.postgresql.Driver
hibernate.connection.url = jdbc:postgresql://localhost/mydatabase
hibernate.connection.username = myuser
hibernate.connection.password = secret
hibernate.c3p0.min_size=5
hibernate.c3p0.max_size=20
hibernate.c3p0.timeout=1800
hibernate.c3p0.max_statements=50
hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect
2、Hibernate的資料源屬性
hibernate.connection.datasource
資料源JNDI名字
hibernate.jndi.url
JNDI提供者的URL (可選)
hibernate.jndi.class
JNDI InitialContextFactory類 (可選)
資料庫使用者 (可選)
資料庫使用者密碼 (可選)
注:應用程式伺服器JNDI資料源的hibernate.properties樣例代碼:
hibernate.connection.datasource = java:/comp/env/jdbc/test
hibernate.transaction.factory_class = /
org.hibernate.transaction.JTATransactionFactory
hibernate.transaction.manager_lookup_class = /
org.hibernate.transaction.JBossTransactionManagerLookup
3、Hibernate配置屬性(可選)
hibernate.dialect
一個Hibernate Dialect類名允許Hibernate針對特定的關系資料庫生成優化的SQL.
取值full.classname.of.Dialect
hibernate.show_sql
輸出所有SQL語句到控制台.
取值true | false
hibernate.format_sql
在log和console中列印出更漂亮的sql.
hibernate.default_schema
在生成的SQL中, 将給定的schema/tablespace附加于非全限定名的表名上.
取值SCHEMA_NAME
hibernate.default_catalog
在生成的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更新排序。這麼做将減少在高并發系統中事務的死鎖。
hibernate.generate_statistics
如果開啟, Hibernate将收集有助于性能調節的統計資料.
hibernate.use_identifer_rollback
如果開啟, 在對象被删除時生成的辨別屬性将被重設為預設值.
hibernate.use_sql_comments
如果開啟, Hibernate将在SQL中生成有助于調試的注釋資訊, 預設值為false.
4、Hibernate JDBC和連接配接(connection)屬性
hibernate.jdbc.fetch_size
非零值,指定JDBC抓取數量的大小 (調用Statement.setFetchSize()).
hibernate.jdbc.batch_size
非零值,允許Hibernate使用JDBC2的批量更新.
取值 建議取5到30之間的值
hibernate.jdbc.batch_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會使用連接配接的中繼資料.
hibernate.jdbc.use_streams_for_binary
在JDBC讀寫binary (二進制)或serializable (可序列化) 的類型時使用流(stream)(系統級屬性).
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) (不建議).
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.<propertyName>
将JDBC屬性propertyName傳遞到DriverManager.getConnection()中去.
hibernate.jndi.<propertyName>
将屬性propertyName傳遞到JNDI InitialContextFactory中去.
5、Hibernate緩存屬性
hibernate.cache.provider_class
自定義的CacheProvider的類名.
取值classname.of.CacheProvider
hibernate.cache.use_minimal_puts
以頻繁的讀操作為代價, 優化二級緩存來最小化寫操作. 在Hibernate3中,這個設定對的叢集緩存非常有用, 對叢集緩存的實作而言,預設是開啟的.
hibernate.cache.use_query_cache
允許查詢緩存, 個别查詢仍然需要被設定為可緩存的.
hibernate.cache.use_second_level_cache
能用來完全禁止使用二級緩存. 對那些在類的映射定義中指定<cache>的類,會預設開啟二級緩存.
hibernate.cache.query_cache_factory
自定義的實作QueryCache接口的類名, 預設為内建的StandardQueryCache.
取值classname.of.QueryCache
hibernate.cache.region_prefix
二級緩存區域名的字首.
取值prefix
hibernate.cache.use_structured_entries
強制Hibernate以更人性化的格式将資料存入二級緩存.
6、Hibernate事務屬性
hibernate.transaction.factory_class
一個TransactionFactory的類名, 用于Hibernate Transaction API (預設為JDBCTransactionFactory).
取值classname.of.TransactionFactory
jta.UserTransaction
一個JNDI名字,被JTATransactionFactory用來從應用伺服器擷取JTA UserTransaction.
hibernate.transaction.manager_lookup_class
一個TransactionManagerLookup的類名 - 當使用JVM級緩存,或在JTA環境中使用hilo生成器的時候需要該類.
取值classname.of.TransactionManagerLookup
hibernate.transaction.flush_before_completion
如果開啟, session在事務完成後将被自動清洗(flush). (在Hibernate和CMT一起使用時很有用.)
hibernate.transaction.auto_close_session
如果開啟, session在事務完成前将被自動關閉. (在Hibernate和CMT一起使用時很有用.)
7、其他屬性
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.
取值update | create | create-drop
hibernate.cglib.use_reflection_optimizer
開啟CGLIB來替代運作時反射機制(系統級屬性). 反射機制有時在除錯時比較有用. 注意即使關閉這個優化, Hibernate還是需要CGLIB. 你不能在hibernate.cfg.xml中設定此屬性.
8、SQL方言
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
9、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的自動狀态轉換和其他關于查詢解析的資訊記錄日志
org.hibernate.secure
為JAAS認證請求做日志
org.hibernate
為任何Hibernate相關資訊做日志 (資訊量較大, 但對查錯非常有幫助)