SQL方言
1、Hibernate JDBC屬性

屬性名 用途 
hibernate.connection.driver_class     jdbc 驅(qū)動(dòng)類(lèi) 
hibernate.connection.url                  jdbc URL
hibernate.connection.username        數(shù)據(jù)庫(kù)用戶(hù)
hibernate.connection.password        數(shù)據(jù)庫(kù)用戶(hù)密碼
hibernate.connection.pool_size        連接池容量上限數(shù)目

注:使用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的數(shù)據(jù)源屬性
屬性名 用途 
hibernate.connection.datasource     數(shù)據(jù)源JNDI名字 
hibernate.jndi.url                           JNDI提供者的URL (可選)
hibernate.jndi.class                        JNDI InitialContextFactory類(lèi) (可選)
hibernate.connection.username       數(shù)據(jù)庫(kù)用戶(hù) (可選)
hibernate.connection.password       數(shù)據(jù)庫(kù)用戶(hù)密碼 (可選)

注:應(yīng)用程序服務(wù)器JNDI數(shù)據(jù)源的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
hibernate.dialect 
= org.hibernate.dialect.PostgreSQLDialect

3、Hibernate配置屬性(可選)

屬性名 用途 
hibernate.dialect 
一個(gè)Hibernate Dialect類(lèi)名允許Hibernate針對(duì)特定的關(guān)系數(shù)據(jù)庫(kù)生成優(yōu)化的SQL.取值full.classname.
of.Dialect 

hibernate.show_sql 
輸出所有SQL語(yǔ)句到控制臺(tái).取值true 
| false

hibernate.format_sql 
在log和console中打印出更漂亮的sql.取值true 
| false

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

hibernate.default_catalog 
在生成的SQL中, 將給定的catalog附加于沒(méi)全限定名的表名上.取值CATALOG_NAME

hibernate.session_factory_name 
SessionFactory創(chuàng)建后,將自動(dòng)使用這個(gè)名字綁定到JNDI中.取值jndi
/composite/name

hibernate.max_fetch_depth 
為單向關(guān)聯(lián)(一對(duì)一, 多對(duì)一)的外連接抓取(
outer join fetch)樹(shù)設(shè)置最大深度. 值為0意味著將關(guān)閉默認(rèn)的外連接抓取.取值 建議在0到3之間取值

hibernate.default_batch_fetch_size 
為Hibernate關(guān)聯(lián)的批量抓取設(shè)置默認(rèn)數(shù)量.取值 建議的取值為4, 
8, 和16

hibernate.default_entity_mode 
為由這個(gè)SessionFactory打開(kāi)的所有Session指定默認(rèn)的實(shí)體表現(xiàn)模式.取值dynamic
-map, dom4j, pojo

hibernate.order_updates 
強(qiáng)制Hibernate按照被更新數(shù)據(jù)的主鍵,為SQL更新排序。這么做將減少在高并發(fā)系統(tǒng)中事務(wù)的死鎖。取值true 
| false

hibernate.generate_statistics 
如果開(kāi)啟, Hibernate將收集有助于性能調(diào)節(jié)的統(tǒng)計(jì)數(shù)據(jù).取值true 
| false

hibernate.use_identifer_rollback 
如果開(kāi)啟, 在對(duì)象被刪除時(shí)生成的標(biāo)識(shí)屬性將被重設(shè)為默認(rèn)值.取值true 
| false

hibernate.use_sql_comments 
如果開(kāi)啟, Hibernate將在SQL中生成有助于調(diào)試的注釋信息, 默認(rèn)值為false.取值true 
| false

4、Hibernate JDBC和連接(connection)屬性

屬性名 用途 
hibernate.jdbc.fetch_size
非零值,指定JDBC抓取數(shù)量的大小 (調(diào)用Statement.setFetchSize()). 

hibernate.jdbc.batch_size 
非零值,允許Hibernate使用JDBC2的批量更新.取值 建議取5到30之間的值

hibernate.jdbc.batch_versioned_data 
如果你想讓你的JDBC驅(qū)動(dòng)從executeBatch()返回正確的行計(jì)數(shù) , 那么將此屬性設(shè)為true(開(kāi)啟這個(gè)選項(xiàng)通常是安全的). 同時(shí),Hibernate將為自動(dòng)版本化的數(shù)據(jù)使用批量DML. 默認(rèn)值為false.eg.true 
| false

hibernate.jdbc.factory_class 
選擇一個(gè)自定義的Batcher. 多數(shù)應(yīng)用程序不需要這個(gè)配置屬性.eg.classname.
of.Batcher

hibernate.jdbc.use_scrollable_resultset 
允許Hibernate使用JDBC2的可滾動(dòng)結(jié)果集. 只有在使用用戶(hù)提供的JDBC連接時(shí),這個(gè)選項(xiàng)才是必要的, 否則Hibernate會(huì)使用連接的元數(shù)據(jù).取值true 
| false

hibernate.jdbc.use_streams_for_binary 
在JDBC讀寫(xiě)binary (二進(jìn)制)或serializable (可序列化) 的類(lèi)型時(shí)使用流(stream)(系統(tǒng)級(jí)屬性).取值true 
| false

hibernate.jdbc.use_get_generated_keys 
在數(shù)據(jù)插入數(shù)據(jù)庫(kù)之后,允許使用JDBC3 PreparedStatement.getGeneratedKeys() 來(lái)獲取數(shù)據(jù)庫(kù)生成的key(鍵)。需要JDBC3
+驅(qū)動(dòng)和JRE1.4+, 如果你的數(shù)據(jù)庫(kù)驅(qū)動(dòng)在使用Hibernate的標(biāo) 識(shí)生成器時(shí)遇到問(wèn)題,請(qǐng)將此值設(shè)為false. 默認(rèn)情況下將使用連接的元數(shù)據(jù)來(lái)判定驅(qū)動(dòng)的能力.取值true|false

hibernate.connection.provider_class 
自定義ConnectionProvider的類(lèi)名, 此類(lèi)用來(lái)向Hibernate提供JDBC連接.取值classname.
of.ConnectionProvider

hibernate.connection.
isolation 
設(shè)置JDBC事務(wù)隔離級(jí)別. 查看java.sql.Connection來(lái)了解各個(gè)值的具體意義, 但請(qǐng)注意多數(shù)數(shù)據(jù)庫(kù)都不支持所有的隔離級(jí)別.取值1, 
248

hibernate.connection.autocommit 
允許被緩存的JDBC連接開(kāi)啟自動(dòng)提交(autocommit) (不建議).取值true 
| false

hibernate.connection.release_mode 
指定Hibernate在何時(shí)釋放JDBC連接. 默認(rèn)情況下,直到Session被顯式關(guān)閉或被斷開(kāi)連接時(shí),才會(huì)釋放JDBC連接. 對(duì)于應(yīng)用程序服務(wù)器的JTA數(shù)據(jù)源, 你應(yīng)當(dāng)使用after_statement, 這樣在每次JDBC調(diào)用后,都會(huì)主動(dòng)的釋放連接. 對(duì)于非JTA的連接, 使用after_transaction在每個(gè)事務(wù)結(jié)束時(shí)釋放連接是合理的. auto將為JTA和CMT事務(wù)策略選擇after_statement, 為JDBC事務(wù)策略選擇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的類(lèi)名.取值classname.
of.CacheProvider 

hibernate.cache.use_minimal_puts 
以頻繁的讀操作為代價(jià), 優(yōu)化二級(jí)緩存來(lái)最小化寫(xiě)操作. 在Hibernate3中,這個(gè)設(shè)置對(duì)的集群緩存非常有用, 對(duì)集群緩存的實(shí)現(xiàn)而言,默認(rèn)是開(kāi)啟的.取值true
|false

hibernate.cache.use_query_cache 
允許查詢(xún)緩存, 個(gè)別查詢(xún)?nèi)匀恍枰辉O(shè)置為可緩存的.取值true
|false

hibernate.cache.use_second_level_cache 
能用來(lái)完全禁止使用二級(jí)緩存. 對(duì)那些在類(lèi)的映射定義中指定
<cache>的類(lèi),會(huì)默認(rèn)開(kāi)啟二級(jí)緩存.取值true|false

hibernate.cache.query_cache_factory 
自定義的實(shí)現(xiàn)QueryCache接口的類(lèi)名, 默認(rèn)為內(nèi)建的StandardQueryCache.取值classname.
of.QueryCache

hibernate.cache.region_prefix 
二級(jí)緩存區(qū)域名的前綴.取值prefix

hibernate.cache.use_structured_entries 
強(qiáng)制Hibernate以更人性化的格式將數(shù)據(jù)存入二級(jí)緩存.取值true
|false

6、Hibernate事務(wù)屬性

屬性名 用途 
hibernate.
transaction.factory_class 
一個(gè)TransactionFactory的類(lèi)名, 用于Hibernate 
Transaction API (默認(rèn)為JDBCTransactionFactory).取值classname.of.TransactionFactory 

jta.UserTransaction 
一個(gè)JNDI名字,被JTATransactionFactory用來(lái)從應(yīng)用服務(wù)器獲取JTA UserTransaction.取值jndi
/composite/name

hibernate.
transaction.manager_lookup_class 
一個(gè)TransactionManagerLookup的類(lèi)名 
- 當(dāng)使用JVM級(jí)緩存,或在JTA環(huán)境中使用hilo生成器的時(shí)候需要該類(lèi).取值classname.of.TransactionManagerLookup

hibernate.
transaction.flush_before_completion 
如果開(kāi)啟, session在事務(wù)完成后將被自動(dòng)清洗(flush). (在Hibernate和CMT一起使用時(shí)很有用.)取值true 
| false

hibernate.
transaction.auto_close_session 
如果開(kāi)啟, session在事務(wù)完成前將被自動(dòng)關(guān)閉. (在Hibernate和CMT一起使用時(shí)很有用.)取值true 
| false

7、其他屬性

屬性名 用途 
hibernate.query.factory_class 
選擇HQL解析器的實(shí)現(xiàn).取值org.hibernate.hql.ast.ASTQueryTranslatorFactory 
or org.hibernate.hql.classic.ClassicQueryTranslatorFactory 

hibernate.query.substitutions 
將Hibernate查詢(xún)中的符號(hào)映射到SQL查詢(xún)中的符號(hào) (符號(hào)可能是函數(shù)名或常量名字).取值hqlLiteral
=SQL_LITERAL, hqlFunction=SQLFUNC

hibernate.hbm2ddl.auto 
在SessionFactory創(chuàng)建時(shí),自動(dòng)將數(shù)據(jù)庫(kù)schema的DDL導(dǎo)出到數(shù)據(jù)庫(kù). 使用 
create-drop時(shí),在顯式關(guān)閉SessionFactory時(shí),將drop掉數(shù)據(jù)庫(kù)schema.取值update | create | create-drop

hibernate.cglib.use_reflection_optimizer 
開(kāi)啟CGLIB來(lái)替代運(yùn)行時(shí)反射機(jī)制(系統(tǒng)級(jí)屬性). 反射機(jī)制有時(shí)在除錯(cuò)時(shí)比較有用. 注意即使關(guān)閉這個(gè)優(yōu)化, Hibernate還是需要CGLIB. 你不能在hibernate.cfg.xml中設(shè)置此屬性.取值true 
| false

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日志類(lèi)別
類(lèi)別 功能 
org.hibernate.SQL 在所有SQL DML語(yǔ)句被執(zhí)行時(shí)為它們記錄日志 
org.hibernate.type 為所有JDBC參數(shù)記錄日志
org.hibernate.tool.hbm2ddl 在所有SQL DDL語(yǔ)句執(zhí)行時(shí)為它們記錄日志
org.hibernate.pretty 在session清洗(flush)時(shí),為所有與其關(guān)聯(lián)的實(shí)體(最多20個(gè))的狀態(tài)記錄日志
org.hibernate.cache 為所有二級(jí)緩存的活動(dòng)記錄日志
org.hibernate.
transaction 為事務(wù)相關(guān)的活動(dòng)記錄日志
org.hibernate.jdbc 為所有JDBC資源的獲取記錄日志
org.hibernate.hql.ast 為HQL和SQL的自動(dòng)狀態(tài)轉(zhuǎn)換和其他關(guān)于查詢(xún)解析的信息記錄日志
org.hibernate.secure 為JAAS認(rèn)證請(qǐng)求做日志
org.hibernate 為任何Hibernate相關(guān)信息做日志 (信息量較大, 但對(duì)查錯(cuò)非常有幫助)