Hibernate配置項(xiàng)
Xml 代碼1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Xml 代碼
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
ate.cache.provider_class}
12.
nate.cache.use_query_cache}
13.
/prop>
14.
ddl.auto}
15.
dbc.fetch_size}
16.
dbc.batch_size}
17.
}
18.
_sql}
19.
comments}
20.
21.
22.
23.
hibernate.properties
#Oracle方言
# hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
# hibernate.dialect=org.hibernate.dialect.SQLServerDialect
,#hibernate方言
hibernate.dialect=org.hibernate.dialect.SQLServerDialect
#是否啟用二級緩存,
hibernate.cache.use_query_cache=true
#二級緩存class
# hibernate.cache.provider_class=org.hibernate.cache.NoCacheProvider #
hibernate.cache.provider_class=org.hibernate.cache.SingletonEhCacheProvider
hibernate.cache.provider_class=org.hibernate.cache.EhCacheProvider #二級緩存配置文件
hibernate.cache.provider_configuration_file_resource_path=/cache/ehcache.xml
#是否同步數(shù)據(jù)庫結(jié)構(gòu)(自動(dòng)創(chuàng)建|更新|驗(yàn)證數(shù)據(jù)庫表結(jié)構(gòu))
#none: 不做任何操作
#create:每次加載hibernate 時(shí)都會(huì)刪除上一次的生成的表,然后根據(jù)你的model 類再重新來生成新表,哪怕兩次沒有任何改變也要這樣執(zhí)行。會(huì)導(dǎo)致數(shù)據(jù)庫表數(shù)據(jù)丟失。
#create-drop: 每次加載hibernate 時(shí)根據(jù)model 類生成表,但是
sessionFactory 一關(guān)閉, 表就自動(dòng)刪除。
#update:第一次加載hibernate 時(shí)根據(jù)model 類會(huì)自動(dòng)建立起表的結(jié)構(gòu)(前提是先建立好數(shù)據(jù)庫),以后加載hibernate 時(shí)根據(jù) model類自動(dòng)更新表結(jié)構(gòu),即使表結(jié)構(gòu)改變了但表中的行仍然存在不會(huì)刪除以前的行。要注意的是當(dāng)部署到服務(wù)器后,表結(jié)構(gòu)是不會(huì)被馬上建立起來的,是要等 應(yīng)用第一次運(yùn)行起來后才會(huì)。 #validate:驗(yàn)證創(chuàng)建數(shù)據(jù)庫表結(jié)構(gòu),只會(huì)和數(shù)據(jù)庫中的表進(jìn)行比較,不會(huì)創(chuàng)建新表,但是會(huì)插入新值。
hibernate.hbm2ddl.auto=none
#關(guān)于hibernate.jdbc.fetch_size與hibernate.jdbc.batch_size的設(shè)置,可能會(huì)將嚴(yán)重影響Hibernate 的CRUD 性能。
#設(shè)定JDBC 的Statement 讀取數(shù)據(jù)的時(shí)候每次從數(shù)據(jù)庫中取出的記錄條數(shù)。 #Fetch Size 設(shè)的越大,讀數(shù)據(jù)庫的次數(shù)越少,速度越快;Fetch Size 越小,讀數(shù)據(jù)庫的次數(shù)越多,速度越慢。
#MySQL就支持Fetch Size特性
hibernate.jdbc.fetch_size=20
#設(shè)定對數(shù)據(jù)庫進(jìn)行批量刪除,批量更新和批量插入的時(shí)候的批次大小。
#Batch Size越大,批量操作的向數(shù)據(jù)庫發(fā)送sql 的次數(shù)越少,速度就越快。 hibernate.jdbc.batch_size=50
#設(shè)置外連接抓取樹的最大深度取值. 建議設(shè)置為0到3之間
#hibernate.max_fetch_depth
,#是否顯示最終執(zhí)行的SQL(開發(fā)環(huán)境)
hibernate.show_sql=false
#格式化顯示的SQL
hibernate.format_sql=false
#如果設(shè)置為true ,Hiberante 將為SQL 產(chǎn)生注釋,這樣更利于調(diào)試。默認(rèn)值為false 。取值為true|false。
hibernate.use_sql_comments=false
(附錄) Hibernate 配置項(xiàng):
1.Hibernate 配置項(xiàng)
(1)hibernate.dialect 指定方言后,Hibernate 可以根據(jù)低層數(shù)據(jù)庫自動(dòng)產(chǎn)生優(yōu)化過的SQL 。取值為org.hibenate.dialect.Dialect 的繼承類。多數(shù)情況下,Hibernate 可以根據(jù)低層JDBC 返回的metadata 來判斷。
(2)hibernate.show_sql打印所有的SQL 語句到控制臺(tái),可以通過設(shè)置org.hibernate.SQL 類的日志策略到DEBUG 級,實(shí)現(xiàn)同樣的效果。取值
true|false。
(3)hibernate.format_sql 格式化SQL 語句在打印到控制臺(tái)或?qū)懭肴罩疚募r(shí)。取值true|false。
(4)hibernate.default_schema 在產(chǎn)生SQL 語句時(shí),在表名前加上映射文件給出的表空間(tablespace )或數(shù)據(jù)庫模式(schema )。取值SCHEMA_NAME。
(5)hibernate.default_catalog 在產(chǎn)生SQL 語句時(shí),在表名前加上映射文件給出的catalog 。取值CATALOG_NAME。
(6)hibernate.session_factory_name Hibernate創(chuàng)建
org.hibernate.SessionFactory 實(shí)例后后會(huì)自動(dòng)的將這個(gè)綁定到JNDI 中的名字上。取值jndi/sf。
,(7)hibernate.max_fetch_depth 設(shè)置對單個(gè)表的外連接數(shù)最大深度。0是屏蔽默認(rèn)的外連接設(shè)置。推薦設(shè)置為0到3之間。
(8)hibernate.default_batch_fetch_size 設(shè)置Hibernate 批量聯(lián)合查詢的尺度。強(qiáng)烈建議。推薦設(shè)置為4、8、16。
(9)hibernate.default_entity_mode 默認(rèn)的實(shí)體表現(xiàn)模式,通過
SessionFactory 打開的所有的Session 。取值,dynamic-map 、dom4j 、pojo 。
(10)hibernate.order_updates 強(qiáng)迫Hibernate 通過被更新項(xiàng)的主鍵值排序SQL 更新。這樣可以在高并發(fā)時(shí),減少事務(wù)死鎖。取值true|false。
(11)hibernate.generate_statistics 如果設(shè)置為true ,Hibernate 將為性能調(diào)整,收集統(tǒng)計(jì)信息。取值true|false。
(12)hibernate.use_identifier_rollback 如果設(shè)置為true ,產(chǎn)生的標(biāo)識屬性將被重置成默認(rèn)值,當(dāng)對象被刪除后。取值為true|false。
(13)hibernate.use_sql_comments 如果設(shè)置為true ,Hiberante 將為SQL 產(chǎn)生注釋,這樣更利于調(diào)試。默認(rèn)值為false 。取值為true|false。
2.Hibernate JDBC和連接的屬性
(1)hibernate.jdbc.fetch_size 指定JDBC 的查詢尺度。通過調(diào)用
(Statement.setFetchSize())。
(2)hibernate.jdbc.batch_size 指定Hibernate 如何使用JDBC2批量更新。取值,推薦5到30。
(3)hibernate.jdbc.batch_versioned_data 設(shè)置這個(gè)屬性為true ,JDBC 將返回executeBatch 執(zhí)行后正確的行數(shù)。打開這個(gè)參數(shù),通常是安全的。Hibernate 將自動(dòng)的譯碼這些數(shù)據(jù)使用批量DML 。默認(rèn)為false 。取值true|false。
(4)hibernate.jdbc.factory_class 選擇一個(gè)定制的
org.hibernate.jdbc.Batcher 。所有的應(yīng)用程序不需要配置這個(gè)屬性。取值,定義工廠的類名。
(5)hibernate.jdbc.use_scrollable_resultset Hibernate使用JDBC2的可滾動(dòng)記錄集。當(dāng)使用用戶提供的JDBC 連接時(shí),需要設(shè)置這個(gè)參數(shù)。否則,Hibernate 使用連接MetaData 。取值true|false。
(6)hibernate.jdbc.use_streams_for_binary 當(dāng)讀或?qū)懚M(jìn)制數(shù)據(jù)或序列化數(shù)據(jù)從JDBC 或到JDBC ,使用流。系統(tǒng)級的數(shù)據(jù)。設(shè)置true|false。
(7)hibernate.jdbc.use_get_generated_keys 在插入后,可以使用JDBC3的PreparedStatement.getGeneratedKeys()中的值找回本地產(chǎn)生的鍵值。要求
,JDBC3 和JRE1.4 ,如果使用Hibernate identifier generator后你的驅(qū)動(dòng)程序有問題,請?jiān)O(shè)置為false 。默認(rèn)情況下,設(shè)法連接MetaData 來決定。取值,true|false。
(8)hibernate.connection.provider_class 實(shí)現(xiàn)了
org.hibernate.connection.ConnectionProvider 接口的類的名稱,為
Hibernate 提供連接。
(9)hibernate.connection.isolation 設(shè)置JDBC 事務(wù)隔離的級別。檢查
java.sql.Connection 的定義的常量值,但要注意大多數(shù)數(shù)據(jù)庫不支持所有的隔離級別、一些附加的和非標(biāo)準(zhǔn)的隔離級別。取值,1、2、4、8。
(10)hibernate.connection.autocommit JDBC共享連接的自動(dòng)提交。(不推薦)取值,true|false。
(11)hibernate.connection.release_mode 指定什么時(shí)候,Hibernate 應(yīng)該釋放JDBC 連接。默認(rèn)情況下,JDBC 是一直存在,只到Session 是被明確關(guān)閉或斷開連接時(shí)。對于應(yīng)用的服務(wù)器JTA 數(shù)據(jù)源,你應(yīng)該使用after_statement強(qiáng)制釋放JDBC 連接在每個(gè)JDBC 請求結(jié)束后。對于非JTA 數(shù)據(jù)源,通常是在每個(gè)事務(wù)結(jié)束后釋放JDBC 連接是有意義的。將該值設(shè)為auto 時(shí),JTA 和CMT 事務(wù)策略時(shí),是選擇after_statement方式。JDBC 事務(wù)策略時(shí),是選擇after_transaction。取值,auto(default),on_close,after_statment,after_transaction。 注意:這個(gè)設(shè)置只影響通過SessionFactory.openSession 打開的session 。對于通過SessionFactory.getCurrentSession 獲取的session ,
CurrentSessionContext 實(shí)現(xiàn)類的配置是用來控制這些session 的連接釋放模式。
(12)hibernate.connection. 傳遞這些屬性到DriverManager.getConnection 中。
(13)hibernate.jndi. 傳遞這些屬性到JNDI InitialContextFactory。
3.Hibernate Cache 屬性
(1)hibernate.cache.provider_class 定制的CacheProvider 的類名。
(2)hibernate.cache.use_minimal_puts 花費(fèi)更多的讀操作,來優(yōu)化二級緩存的最少寫操作。這個(gè)操作對于集群緩存是非常有用的。在Hibernate3中,對于集群緩存是默認(rèn)開啟該功能的。取值,true|false。
(3)hibernate.cache.use_query_cache 開啟查詢緩存,個(gè)別查詢肯定應(yīng)該開啟查詢緩存。取值,true|false。
,(4)hibernate.cache.use_second_level_cache 也許過去習(xí)慣于完全屏蔽掉二級緩存,默認(rèn)是開啟,對于指定CacheProvider 實(shí)現(xiàn)類的情況。取值,true|false。
(5)hibernate.cache.query_cache_factory 實(shí)現(xiàn)QueryCache 接口的類名,默認(rèn)是內(nèi)置的StandardQueryCache 。
(6)hibernate.cache.region_prefix 對于使用二級緩存區(qū)域名的前綴。
(7)hibernate.cache.use_structured_entries 強(qiáng)迫Hibernate 在存儲(chǔ)數(shù)據(jù)到二級緩存時(shí),使用更人性化的格式。取值,true|false。
4.Hibernate 事務(wù)屬性
(1)hibernate.transaction.transaction_class 使用Hibernate 事務(wù)APIs 的TransactionFactory 的類名。默認(rèn)是JDBCTransactionFactory 。
(2)jta.UserTransaction JTATransactionFactory使用JNDI 名字從應(yīng)用服務(wù)器中獲取JTA UserTransaction。取值,jndi/ut。
(3)hibernate.transaction.manager_lookup_class 是一個(gè)
TransactionManagerLookup 實(shí)現(xiàn)類的類名。當(dāng)JVM 級別的緩存開啟時(shí)或在JTA 環(huán)境中使用hilo generator時(shí),要求指定該值。
(4)hibernate.transaction.flush_before_completion 如果設(shè)為true ,
session 將在事務(wù)完成階段之前,自動(dòng)將緩存區(qū)的值推入到數(shù)據(jù)庫中。內(nèi)置和自動(dòng)session 上下文管理是被優(yōu)先選用的。取值,true|false。
(5)hibernate.transaction.auto_close_session 如果設(shè)為true ,session 將在事務(wù)完成之后,自動(dòng)的關(guān)閉session 。內(nèi)置和自動(dòng)session 上下文管理是被優(yōu)先選用的。取值,true|false。
5.Miscellaneous properties 各種混合的屬性
(1)hibernate.current_session_context_class 提供一個(gè)對于當(dāng)前session 生命周期的策略。取值,jta 、thread 、managed 、定制類名。
(2)hibernate.query.factory_class 選擇HSQL 的解析實(shí)現(xiàn)類。取值,org.hibernate.hsql.ast.ASTQueryTranslatorFactory 和
org.hibernate.hsql.classic.ClassicQueryTranslatorFactory 。
(3)hibernate.query.subsitutions Hibernate 中標(biāo)記符到SQL 中標(biāo)記符的映射。舉例說,可以是函數(shù)名或普通字符串名。取值,如hsqLiteral=SQL_LITERAL,hqlFunction=SQLFUN。
(4)hibernate.hbm2ddl.auto 當(dāng)SessionFactory 被創(chuàng)建時(shí),自動(dòng)的驗(yàn)證或輸出模式DDL (也就建表語句)到數(shù)據(jù)庫中。也就是說,自動(dòng)的驗(yàn)證數(shù)據(jù)庫表結(jié)構(gòu)
,或先刪除再重新建立,或在原表結(jié)構(gòu)上更新數(shù)據(jù)表結(jié)構(gòu)。當(dāng)將值置為
create-drop 時(shí),在SessionFactory 被清除時(shí),將刪除數(shù)據(jù)庫中表結(jié)構(gòu)。取值,validate 、create 、update 、create-drop 。
(5)hibernate.cglib.use_reflection_optimizer 用CGLIB 代替運(yùn)行期的
reflection (系統(tǒng)級屬性)。在有故障時(shí),反射是非常有用的,注意Hibernate 總是需要CGLIB ,甚至在你關(guān)閉優(yōu)化后。你不可以設(shè)置這個(gè)屬性在
hibernate.cfg.xml 文件中。