锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
ORM緙撳瓨絳栫暐
1.浜嬪姟綰х紦瀛?session level cache)
session鐢熷懡鍛ㄦ湡鐨勭紦瀛?鍏抽棴session鍗蟲秷浜?/p>
2.搴旂敤綰?榪涚▼綰х紦瀛?sessionFactory level cache)
鏌愪釜搴旂敤涓殑鍏變韓緙撳瓨,澶氫釜浜嬪姟鍙互鍏變韓,鍦╯essionFactory灞傚疄鐜?鎵鏈塻essionFactory鍒涘緩鐨剆ession鍙互鍏變韓.
3.鍒嗗竷寮忕紦瀛?/p>
澶氫釜JVM鍏變韓鐨勭紦瀛?閫氳繃榪滅▼鏈哄埗瀹炵幇緙撳瓨鏁版嵁鍚屾,浠繪剰瀹炰緥淇敼鏁版嵁,鎵鏈夌殑JVM閮借鏇存柊緙撳瓨.
Hibernate鏁版嵁緙撳瓨
1.鍐呴儴緙撳瓨(session level)涓綰х紦瀛?/span>
鏄簨鍔$駭鐨勭紦瀛?session涓淮鎶ょ殑涓涓狹ap,Map鐨刱ey鏄寘鍚簡鏁版嵁綾誨瀷鍜宨d,浠庢暟鎹簱鍔犺澆鐨勬暟鎹兘浼氳繘鍏ap緙撳瓨涓?閫氳繃session鍔犺澆鏁版嵁鏃朵細鍏堝湪session緙撳瓨閲屾壘,涓綰х紦瀛樻槸session鐨刾rivate鏁版嵁,session瀹炰緥娑堜骸灝辨竻闄や簡,鍦ㄥ簲鐢ㄤ腑灝變繚鎸佸湪涓嬈¤姹傜殑寮濮嬪拰緇撴潫涔嬮棿.
涓鑸敱Hibernate鑷姩緇存姢,涔熸敮鎸佹墜鍔ㄧ淮鎶?/p>
session.evit(Object obj) 灝嗘寔涔呭寲瀵硅薄浠庝竴綰х紦瀛樹腑娓呴櫎.
session.clear() 娓呯┖涓綰х紦瀛?/p>
session.contains(Object obj) 鍒ゆ柇鎸囧畾鐨勫璞℃槸鍚﹀瓨鍦ㄤ簬涓綰х紦瀛樹腑.
session.flush() 鍒鋒柊涓綰х紦瀛樺尯鐨勫唴瀹?浣跨紦瀛樹笌鏁版嵁搴撴暟鎹繚鎸佸悓姝?
2.浜岀駭緙撳瓨(sessionFactory level)
鍖呭惈浜嗗簲鐢ㄧ駭鍜屽垎甯冨紡鐨勭紦瀛?鐢辨湰sessionFactory鐨勬墍鏈塻ession瀹炰緥鍏變韓,session鎿嶄綔鏃朵細鍏堟煡涓綰х紦瀛?鐒跺悗鏌ヤ簩綰х紦瀛?鏈鍚庡啀鏌ョ墿鐞嗘暟鎹簱.瑕佷嬌鐢ㄤ簩綰х紦瀛樺繀欏昏榪涜閰嶇疆.
閫傚悎鐢ㄧ紦瀛樼殑鏁版嵁
1.涓嶄細琚叾浠栧簲鐢ㄤ慨鏀?/p>
鍖呮嫭鐩存帴鐢↗DBC淇敼絳?鍥犱負鍏朵粬搴旂敤淇敼浜嗘暟鎹箣鍚巋ibernate騫朵笉鐭ラ亾,涓嶈兘鑷姩鏇存柊緙撳瓨,涓嶈繃鍙互鎵嬪姩鏇存柊緙撳瓨
2.鏁版嵁澶у皬鍙互鎺ュ彈,姣曠珶鍐呭瓨璧勬簮涔熶笉澶?/p>
3.鏁版嵁鏇存柊棰戠巼浣?姣斿鏁版嵁瀛楀吀絳夊父閲忔暟鎹?
4.鍙兘琚郴緇熼綣佷嬌鐢?/p>
5.闈炲叧閿殑鏁版嵁
6.涓嶄細琚茍鍙戣闂殑鏁版嵁
甯哥敤鐨勪簩綰х紦瀛樻彃浠?/p>
EHCache org.hibernate.cache.EhCacheProvider
OSCache org.hibernate.cache.OSCacheProvider
SwarmCahe org.hibernate.cache.SwarmCacheProvider 鎻愪緵浜嗗垎甯冨紡
JBossCache org.hibernate.cache.TreeCacheProvider 鎻愪緵浜嗗垎甯冨紡
EHCache浜岀駭緙撳瓨閰嶇疆鏂規硶
1.鍚敤浜岀駭緙撳瓨棣栧厛瑕佸湪hibernate.cfg.xml閰嶇疆
<hibernate-configuration>
<session-factory>
<!-- 閰嶇疆浜岀駭緙撳瓨鎻掍歡EHCache鐨凱rovider綾?->
<property name="hibernate.cache.provider_class">
org.hibernate.cache.EhCacheProvider
</property>
<!-- 鍚姩"鏌ヨ緙撳瓨" -->
<property name="hibernate.cache.use_query_cache">
true
</property>
</session-factory>
</hibernate-configuration>
2.鐒跺悗閰嶇疆cache鐨勯厤緗枃浠秂hcache.xml
<ehcache>
<!-- maxElementsInMemory涓虹紦瀛樺璞$殑鏈澶ф暟鐩?
eternal璁劇疆鏄惁姘歌繙涓嶈繃鏈?
timeToIdleSeconds瀵硅薄澶勪簬絀洪棽鐘舵佺殑鏈澶氱鏁?
timeToLiveSeconds瀵硅薄澶勪簬緙撳瓨鐘舵佺殑鏈澶氱鏁?
overflowtodisk鍐呭瓨涓嶈凍鏃舵槸鍚﹀惎鐢ㄧ鐩樼紦瀛?-->
<diskStore path="java.io.tmpdir"/>
<defaultCache maxElementsInMemory="10000" eternal="false" timeToIdleSeconds="300" timeToLiveSeconds="600" overflowToDisk="true"/>
</ehcache>
3.鏈鍚庤鍦ㄦ槧灝勬枃浠?**.hbm.xml涓寚瀹氬疄浣撶殑緙撳瓨鍚屾絳栫暐
<?xml version="1.0" encoding='UTF-8'?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<hibernate-mapping>
<class>
<!-- 璁劇疆璇ユ寔涔呭寲綾葷殑浜岀駭緙撳瓨騫跺彂璁塊棶絳栫暐-->
<cache usage="read-write"/>
<set name = "xxx">
<cache usage="read-only" />
</set>
</class>
</hibernate-mapping>
hibernate鎻愪緵鐨勭紦瀛樺悓姝ョ瓥鐣?鍙互鍦╱sage涓緗?/p>
read-only
鍙
nonstrict-read-write
鏇存柊棰戠巼涓嶉珮
read-write
涓ユ牸鍙鍐?/p>
transactional(Ecache涓嶆敮鎸?
浜嬪姟鍨嬬紦瀛?/p>