屬性名 |
用途 |
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中, 將給定的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更新排序。這麼做將減少在高並發系統中事務的死鎖。取值
true|
false
hibernate.generate_statistics
如果開啟, Hibernate將收集有助於性能調節的統計數據.取值
true|
false
hibernate.use_identifer_rollback
如果開啟, 在對象被刪除時生成的標識屬性將被重設為默認值.取值
true|
false
hibernate.use_sql_comments
如果開啟, Hibernate將在SQL中生成有助於調試的注釋信息, 默認值為
false.取值
true|
false
表3.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會使用連接的元數據.取值
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中去.
表3.5. 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
表3.6. Hibernate事務屬性
屬性名 |
用途 |
hibernate.transaction.factory_class
一個
TransactionFactory的類名, 用於Hibernate
TransactionAPI (默認為
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
表3.7. 其他屬性
屬性名 |
用途 |
hibernate.current_session_context_class
為"當前"
Session指定一個(自定義的)策略。eg.
jta|
thread|
custom.Class
hibernate.query.factory_class
選擇HQL解析器的實現.取值
org.hibernate.hql.ast.ASTQueryTranslatorFactoryor
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
3.4.1. SQL方言
你應當總是為你的數據庫將hibernate.dialect屬性設置成正確的org.hibernate.dialect.Dialect子類. 如果你指定一種方言, Hibernate將為上面列出的一些屬性使用合理的默認值, 為你省去了手工指定它們的功夫.
表3.8. 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
表3.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的AST分析日志
org.hibernate.secure
為JAAS認證請求做日志
org.hibernate
為任何Hibernate相關信息做日志 (信息量較大, 但對查錯非常有幫助)
表3.10.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
Borland ES
posted on 2008-04-22 18:28蘆葦閱讀(49236)評論(1)aspx?postid=194855" target="_blank">編輯收藏所屬分類:Hibernate
Feedback
#re: Hibernate 參數設置一覽表2008-10-14 18:13蘆葦
SQL方言
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
JNDIInitialContextFactory類(可選)
hibernate.connection.username
數據庫用戶(可選)
hibernate.connection.password
數據庫用戶密碼(可選)
注:應用程序服務器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
hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
3、
Hibernate配置屬性(可選)
屬性名 |
用途 |
hibernate.dialect
一個Hibernate
Dialect類名允許Hibernate針對特定的關系數據庫生成優化的SQL.
取值full.classname.of.Dialect
hibernate.show_sql
輸出所有SQL語句到控制台.
取值true|false
hibernate.format_sql
在log和console中打印出更漂亮的sql.
取值true|false
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更新排序。這麼做將減少在高並發系統中事務的死鎖。
取值true|false
hibernate.generate_statistics
如果開啟, Hibernate將收集有助於性能調節的統計數據.
取值true|false
hibernate.use_identifer_rollback
如果開啟, 在對象被刪除時生成的標識屬性將被重設為默認值.
取值true|false
hibernate.use_sql_comments
如果開啟, Hibernate將在SQL中生成有助於調試的注釋信息, 默認值為
false.
取值true|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會使用連接的元數據.
取值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中去.
5、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
6、
Hibernate事務屬性
屬性名 |
用途 |
hibernate.transaction.factory_class
一個
TransactionFactory的類名, 用於Hibernate
TransactionAPI (默認為
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). (在Hibernate和CMT一起使用時很有用.)
取值true|false
hibernate.transaction.auto_close_session
如果開啟, session在事務完成前將被自動關閉. (在Hibernate和CMT一起使用時很有用.)
取值true|false
7、
其他屬性
屬性名 |
用途 |
hibernate.query.factory_class
選擇HQL解析器的實現.
取值org.hibernate.hql.ast.ASTQueryTranslatorFactoryororg.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中設置此屬性.
取值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日志類別
類別 |
功能 |
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相關信息做日志 (信息量較大, 但對查錯非常有幫助)