標籤:c class a int 檔案 使用
1、Query查詢方式
SQL,HQL,OID,QBC(query by criteria)
2、二級緩衝
sessionFactory緩衝,也叫進程級的緩衝,使用第3方外掛程式實現的,只緩衝實體,生命週期和sessionFactory一致
使用環境:
經常被訪問
改動不大
數量有限
不是很重要的資料,允許出現偶爾並發的資料
使用方法:(一般用EHCache)
匯入jar包
在hibernate.cfg.xml檔案中
設定使用二級緩衝<property name="cache.use_second_level_cache">true</property>
指定緩衝策略ehcache
<property name="hibernate.cache.provider_class">
org.hibernate.cache.EhCacheProvider
</property>
配置ehcache.xml,定製緩衝策略,共需指定5個屬性
選擇哪個對象使用二級緩衝機制
在該對象的設定檔*.hbm.xml檔案中配置如何使用二級緩衝機制:<cache usage="read-only" region="sampleCache1"/>
首先,通過region屬性指定要使用的二級緩衝;
其次,通過usage屬性指定使用二級緩衝的方式
3、查詢快取
概述:對普通屬性進行緩衝。如果關聯的表發生了修改,那麼查詢快取的生命週期也結束了
使用環境:
適用於查詢結果資料量巨大,查詢結果一般不輕易改變的查詢(例如商品資訊)
使用方法:
在hibernate.cfg.xml檔案中加入<property name="hibernate.cache.use_query_cache">ture</property>
在程式中必須手動啟用查詢快取:query.setCacheable(true);
4、鎖機制
悲觀鎖+樂觀鎖
悲觀鎖:當線程的事務沒有結束前,其他事務都要等著
樂觀鎖:誰在前,誰先操作
實現原理:為資料庫表增加一個欄位version,當使用者讀取資料時,會將版本號碼version一同讀出,
如果該使用者修改了資料,會先將讀取的版本號碼與資料庫中的版本號碼做比對,
如果相同,才進行修改,修改完成後,會將版本號碼version+1
如果不相同,則不能修改,會拋出異常
使用方法:
對象增加version屬性
對應檔*.hbm.xml的class節點增加屬性optimistic-lock="lock"
增加節點<version name="version" type="integer" column="t_version"/>必須放在id後