<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 6  文章 - 129  trackbacks - 0
    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    常用鏈接

    留言簿(14)

    隨筆檔案(6)

    文章分類(467)

    文章檔案(423)

    相冊(cè)

    收藏夾(18)

    JAVA

    搜索

    •  

    積分與排名

    • 積分 - 825738
    • 排名 - 49

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    Session 的緩存
      Hibernate中緩存分為兩種:一級(jí)緩存(Session級(jí)別)和二級(jí)緩存
    (SessionFactory級(jí)別)。
       Session 的作用:
        1)充當(dāng)蓄水池的作用,減少程序訪問數(shù)據(jù)庫的次數(shù).很多對(duì)象數(shù)據(jù)不是經(jīng)常改變的,第一次訪問這些對(duì)象時(shí),Hibernate會(huì)將它們放
    入緩存中,以后只要這個(gè)對(duì)象沒有改動(dòng)過,訪問這個(gè)對(duì)象時(shí)Hibernate就不會(huì)去數(shù)據(jù)庫里加載它的數(shù)據(jù),而是從內(nèi)存中直接返回應(yīng)用程序,這樣子效率就比較高了.
        2)保證緩存中的數(shù)據(jù)與數(shù)據(jù)庫同步.緩存畢竟不是數(shù)據(jù)庫,它的數(shù)據(jù)可能和數(shù)據(jù)庫不一致,這時(shí)Hibernate會(huì)負(fù)責(zé)將緩存中的數(shù)據(jù)同步到數(shù)據(jù)庫.當(dāng)然這要參照FlushMode的具體設(shè)置.
       Hibernate向我們提供的主要的操縱數(shù)據(jù)庫的接口,Session就是其中的一個(gè),它提供了基本的增,刪,改,查方法.而且具有一個(gè)緩存機(jī)制,能夠按照某個(gè)時(shí)間點(diǎn),按照緩存中的持久化對(duì)象屬性的變化來更新數(shù)據(jù)庫,著就是Session的緩存清理過程.在Hibernate中對(duì)象分為三個(gè)狀態(tài),臨時(shí),持久化,游離.如果我們希望JAVA里的一個(gè)對(duì)象一直存在,就必須有一個(gè)變量一直引用著這個(gè)對(duì)象.當(dāng)這個(gè)變量沒了.對(duì)象也就被JVM回收了.當(dāng)然這個(gè)是最基本的常識(shí)了.當(dāng)Session的save()方法持久化了一個(gè)對(duì)象的時(shí)候,即使這個(gè)對(duì)象的引用變量小時(shí)了.這個(gè)對(duì)象也依然存在,因?yàn)镾essoin里保存了一個(gè)這個(gè)對(duì)象的引用,當(dāng)然Session緩存被清空,這個(gè)對(duì)象就OVER了.在這個(gè)對(duì)象保存在Sessoin的時(shí)候如果調(diào)用load()方法試圖去數(shù)據(jù)庫中加載一個(gè)對(duì)象,這個(gè)時(shí)候Session會(huì)先判斷緩存中有沒有這個(gè)對(duì)象,如果有了,那么就不需要去數(shù)據(jù)庫加載了.這樣可以減少訪問數(shù)據(jù)庫的頻率,還可以保證緩存中的對(duì)象于數(shù)據(jù)庫的同步.
          Session有兩個(gè)方法,一個(gè)commit()事務(wù)提交方法,還有flush()刷新緩存方法,都有著清理緩存的作用,flush()進(jìn)行緩存的清理,執(zhí)行一系列的SQL語句,但不會(huì)提交事務(wù).而commit()方法會(huì)先調(diào)用flush()方法,然后在提交事務(wù).Session還有一個(gè)方法就是setFushMode()方法,用戶設(shè)定清理緩存的時(shí)間點(diǎn),主要有下面幾種模式,默認(rèn)Flush.Mode.AUTO
          1)FlushMode.AUTO  Hibernate 判斷對(duì)象的屬性是更改,如果被更改過成了臟數(shù)據(jù),則會(huì)在下一個(gè)查詢語句前將更新此改動(dòng)以保證同步數(shù)據(jù)庫.
          2)FlushMode.COMMIT  在事務(wù)結(jié)束之前清理Session的緩存,其它任何時(shí)候都不清理緩存
          3)FlushMode.NEVER  除非強(qiáng)制調(diào)用Session的flush()方法,否則永不清理緩存
          4)FlushMode.ALWAYS 在每一個(gè)查詢語句前都調(diào)用flush()方法進(jìn)行緩存清理.
    對(duì)象的臨時(shí)狀態(tài):剛用new創(chuàng)建對(duì)象的時(shí)候,它還沒有被持久化,這個(gè)時(shí)候是臨時(shí)狀態(tài).
    對(duì)象的持久化狀態(tài):已經(jīng)被加入到Session的緩存中,通常所說的持久化對(duì)象就是只一個(gè)對(duì)象在這個(gè)狀態(tài)的時(shí)候.
    對(duì)象的游離狀態(tài):已經(jīng)被持久化,但是不屬于Session的緩存的時(shí)候是游離狀態(tài).



    posted on 2007-10-29 09:21 Ke 閱讀(644) 評(píng)論(0)  編輯  收藏 所屬分類: hibernate
    主站蜘蛛池模板: 美女视频黄频a免费大全视频| 亚洲JIZZJIZZ中国少妇中文| 亚洲黄片手机免费观看| 亚洲一区二区三区精品视频| 亚洲欧洲精品无码AV| 精品无码国产污污污免费| 精品熟女少妇av免费久久| 成人免费一区二区三区| 91在线品视觉盛宴免费| 国产在线观看免费av站| 污污污视频在线免费观看| 亚洲欧美成人av在线观看| 亚洲国产电影在线观看| 成年美女黄网站18禁免费| 亚洲精品免费视频| 国产成年无码久久久免费| 久久国产乱子伦精品免费午夜| 校园亚洲春色另类小说合集| 亚洲成在人线av| 久久久久久亚洲精品不卡| 亚洲?v无码国产在丝袜线观看| 国产精品二区三区免费播放心| 欧美大尺寸SUV免费| 日韩免费a级毛片无码a∨| 国产成人精品免费视频大| 日韩av无码久久精品免费| 香蕉成人免费看片视频app下载| a级片在线免费看| 亚洲免费观看视频| a级毛片免费在线观看| 在线观看黄片免费入口不卡| 中国黄色免费网站| 亚洲免费人成在线视频观看| 另类免费视频一区二区在线观看| 黄网站免费在线观看| 久久99精品免费视频| a拍拍男女免费看全片| 一二三四视频在线观看中文版免费| 成人性生交大片免费看无遮挡| 成人毛片18女人毛片免费视频未| 扒开双腿猛进入爽爽免费视频|