av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

Hibernate緩存的支持和使用情況

哪些方法支持Hibernate緩存
*get()
*load()
*iterate()  (查詢(xún)實(shí)體對(duì)象)
save()

創(chuàng)新互聯(lián)主營(yíng)靈璧網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,重慶APP開(kāi)發(fā),靈璧h5小程序設(shè)計(jì)搭建,靈璧網(wǎng)站營(yíng)銷(xiāo)推廣歡迎靈璧等地區(qū)企業(yè)咨詢(xún)

查詢(xún)緩存只對(duì)query.list()起作用

一級(jí)緩存測(cè)試:

1.Load測(cè)試: 在同一個(gè)session中發(fā)出兩次load查詢(xún)(1)

2.Get測(cè)試: 在同一個(gè)session中發(fā)出兩次get查詢(xún)(1)

3.iterate測(cè)試: 在同一個(gè)session中發(fā)出兩次iterator查詢(xún)(1(id)+N,1(id))

4.Iterate查詢(xún)屬性測(cè)試: 同一個(gè)session中發(fā)出兩次查詢(xún)屬性(2次,iterate查詢(xún)普通屬性,一級(jí)緩存不會(huì)緩存,所以會(huì)發(fā)出sql)

5.同一個(gè)session中先save,再發(fā)出load查詢(xún)save過(guò)的數(shù)據(jù)--save是使用緩存的

6.同一個(gè)session中先調(diào)用load查詢(xún),然后執(zhí)行sessio.clear()或session.evict(),再調(diào)用load查詢(xún)(2次)

       sessio.clear()或session.evict()可以管理一級(jí)緩存,一級(jí)緩存無(wú)法取消,但可以管理. 上面的語(yǔ)句都會(huì)發(fā)出sql 因?yàn)橐患?jí)緩存中的實(shí)體被清除了

7.向數(shù)據(jù)庫(kù)中批量加入1000條數(shù)據(jù)

       //每一定條數(shù)據(jù)就強(qiáng)制session將數(shù)據(jù)持久化,同時(shí)清除緩存,避免大量數(shù)據(jù)造成內(nèi)存溢出

開(kāi)啟二級(jí)緩存測(cè)試:

1.開(kāi)啟兩個(gè)session中發(fā)出兩次load查詢(xún)(get與load一樣,1次),

2.開(kāi)啟兩個(gè)session,分別調(diào)用load,再使用sessionFactory清楚二級(jí)緩存(2次)

3.一級(jí)緩存和二級(jí)緩存的交互

session.setCacheMode(CacheMode.GET);    //設(shè)置成 只是從二級(jí)緩存里讀,不向二級(jí)緩存里寫(xiě)數(shù)據(jù) (2)

session.setCacheMode(CacheMode.PUT);  //設(shè)置成只是向二級(jí)緩存里寫(xiě)數(shù)據(jù),不讀數(shù)據(jù) (2次)

Hibernate緩存查詢(xún)測(cè)試:開(kāi)啟hibernate查詢(xún)緩存測(cè)試:

1.  開(kāi)啟查詢(xún)緩存,關(guān)閉二級(jí)緩存,開(kāi)啟一個(gè)session,分別調(diào)用query.list  (查詢(xún)屬性)(1次)

2.  開(kāi)啟查詢(xún)緩存,關(guān)閉二級(jí)緩存,開(kāi)啟兩個(gè)session,分別調(diào)用query.list  (查詢(xún)屬性)

(1次)第二次沒(méi)有去查詢(xún)數(shù)據(jù)庫(kù),因?yàn)椴樵?xún)緩存生命周期與session生命周期無(wú)關(guān)

3.  開(kāi)啟查詢(xún)緩存,關(guān)閉二級(jí)緩存,開(kāi)啟兩個(gè)session,分別調(diào)用query.iterate (查詢(xún)屬性)

(2次)第二去查詢(xún)數(shù)據(jù)庫(kù),因?yàn)椴樵?xún)緩存只對(duì)query.list()起作用,對(duì)query.iterate()不起作用,也就是說(shuō)query.iterate()不使用查詢(xún)緩存

4.  關(guān)閉查詢(xún)緩存,關(guān)閉二級(jí)緩存,開(kāi)啟兩個(gè)session,分別調(diào)用query.list (查詢(xún)實(shí)體對(duì)象)      第二去查詢(xún)數(shù)據(jù)庫(kù),因?yàn)閘ist默認(rèn)每次都會(huì)發(fā)出查詢(xún)sql

5.  開(kāi)啟查詢(xún)緩存,關(guān)閉二級(jí)緩存,開(kāi)啟兩個(gè)session,分別調(diào)用query.list (查詢(xún)實(shí)體對(duì)象)      第二去查詢(xún)數(shù)據(jù)庫(kù)時(shí),會(huì)發(fā)出N條sql語(yǔ)句,因?yàn)殚_(kāi)啟了查詢(xún)緩存,關(guān)閉了二級(jí)緩存,那么查詢(xún)緩存會(huì)緩存實(shí)體對(duì)象的id,所以hibernate會(huì)根據(jù)實(shí)體對(duì)象的id去查詢(xún)相應(yīng)的實(shí)體,如果緩存中不存在相應(yīng)的實(shí)體,那么將發(fā)出根據(jù)實(shí)體id查詢(xún)的sql語(yǔ)句,否則不會(huì)發(fā)出sql,使用緩存中的數(shù)據(jù)

6.  開(kāi)啟查詢(xún)緩存,開(kāi)啟二級(jí)緩存,開(kāi)啟兩個(gè)session,分別調(diào)用query.list (查詢(xún)實(shí)體對(duì)象)      第二不會(huì)發(fā)出sql,因?yàn)殚_(kāi)啟了二級(jí)緩存和查詢(xún)緩存,查詢(xún)緩存緩存了實(shí)體對(duì)象的id列表,hibernate會(huì)根據(jù)實(shí)體對(duì)象的id列表到二級(jí)緩存中取得相應(yīng)的數(shù)據(jù)

二級(jí)緩存在項(xiàng)目中的集成和使用

1.將echcache.xml文件拷貝到src下, 二級(jí)緩存hibernate默認(rèn)是關(guān)閉的,手動(dòng)開(kāi)啟
2.開(kāi)啟二級(jí)緩存,修改hibernate.cfg.xml文件,
< property name=”hibernate.cache.user_second_level_cache”>true< /property>
3.指定緩存產(chǎn)品提供商
< property name=”hibernate.cache.provider_calss”>org.hibernate.cache.EhCacheProvider< /property>
4.指定那些實(shí)體類(lèi)使用二級(jí)緩存(兩種方法,推薦使用第二種)
***種:在*.hbm.xml中,在< id>之前加入
< cache usage=”read-only” />, 使用二級(jí)緩存
第二種:在hibernate.cfg.xml配置文件中,在< mapping resource=”com/Studnet.hbm.xml” />后面加上:
< class-cache class=” com.Studnet” usage=”read-only” />

總結(jié):

不要想當(dāng)然的以為Hibernate緩存一定能提高性能,僅僅在你能夠駕馭它并且條件合適的情況下才是這樣的。hibernate的二級(jí)緩存限制還是比較多的,不方便用jdbc可能會(huì)大大的降低更新性能。在不了解原理的情況下亂用,可能會(huì)有1+N的問(wèn)題。不當(dāng)?shù)氖褂眠€可能導(dǎo)致讀出臟數(shù)據(jù)。

如果受不了hibernate的諸多限制,那么還是自己在應(yīng)用程序的層面上做緩存吧。

在越高的層面上做緩存,效果就會(huì)越好。就好像盡管磁盤(pán)有緩存,數(shù)據(jù)庫(kù)還是要實(shí)現(xiàn)自己的緩存,盡管數(shù)據(jù)庫(kù)有緩存,咱們的應(yīng)用程序還是要做緩存。因?yàn)榈讓拥木彺嫠⒉恢栏邔右眠@些數(shù)據(jù)干什么,只能做的比較通用,而高層可以有針對(duì)性的實(shí)現(xiàn)緩存,所以在更高的級(jí)別上做緩存,效果也要好些吧。

對(duì)于性能的看法是:合理的性能而不是***的性能。什么是合理的?用戶(hù)能感覺(jué)到(或敏感的)的范圍內(nèi),不成為物理上業(yè)務(wù)處理的瓶頸,比如常說(shuō)的3秒之內(nèi)響應(yīng)等。

【編輯推薦】

  1. Hibernate緩存簡(jiǎn)介及分類(lèi)
  2. Hibernate中g(shù)enerator屬性的意義
  3. hibernate Key Generator 主鍵生成方式
  4. Hibernate的主鍵生成機(jī)制
  5. hibernate的Query cache

網(wǎng)站欄目:Hibernate緩存的支持和使用情況
文章起源:http://uogjgqi.cn/article/dpcisoh.html
掃二維碼與項(xiàng)目經(jīng)理溝通

我們?cè)谖⑿派?4小時(shí)期待你的聲音

解答本文疑問(wèn)/技術(shù)咨詢(xún)/運(yùn)營(yíng)咨詢(xún)/技術(shù)建議/互聯(lián)網(wǎng)交流