|
最近學(xué)習(xí)了一下hibernate(hibernate三種狀態(tài)的講解),看到網(wǎng)上有一篇寫(xiě)得還挺不錯(cuò),就轉(zhuǎn)載下來(lái),自己寫(xiě)的不一定比人家總結(jié)得好,還結(jié)合了孔浩老師上課的案例代碼,下面是詳細(xì)內(nèi)容: 下面是轉(zhuǎn)自:http://www./asktalk/archive/2006/01/18/28548.html的一篇文章 在Hibernate中有三種狀態(tài),對(duì)它的深入理解,才能更好的理解hibernate的運(yùn)行機(jī)理,剛開(kāi)始不太注意這些概念,后來(lái)發(fā)現(xiàn)它是重要的。對(duì)于理解hibernate,JVM和sql的關(guān)系有更好的理解。對(duì)于需要持久化的JAVA對(duì)象,在它的生命周期中有三種狀態(tài),而且互相轉(zhuǎn)化。 1, 臨時(shí)狀態(tài)(Transient):用new創(chuàng)建的對(duì)象,它沒(méi)有持久化,沒(méi)有處于Session中,處于此狀態(tài)的對(duì)象叫臨時(shí)對(duì)象; 2, 持久化狀態(tài)(Persistent):已經(jīng)持久化,加入到了Session緩存中。如通過(guò)hibernate語(yǔ)句保存的對(duì)象。處于此狀態(tài)的對(duì)象叫持久對(duì)象; 3, 游離狀態(tài)(Detached):持久化對(duì)象脫離了Session的對(duì)象。如Session緩存被清空的對(duì)象。
狀態(tài)轉(zhuǎn)換圖,結(jié)束官方的和轉(zhuǎn)載作者的
兩者都不會(huì)被Session關(guān)聯(lián),對(duì)象屬性和數(shù)據(jù)庫(kù)可能不一致; 游離對(duì)象有持久化對(duì)象關(guān)閉Session而轉(zhuǎn)化而來(lái),在內(nèi)存中還有對(duì)象所以此時(shí)就變成游離狀態(tài)了; 在操作了hibernate的方法如save()等后,并沒(méi)有直接生成sql語(yǔ)句,去操作數(shù)據(jù)庫(kù),而是把這些更新存入Session中,只有Session緩存要被更新時(shí),底層的sql語(yǔ)句才能執(zhí)行,數(shù)據(jù)存入數(shù)據(jù)庫(kù); 下面是孔浩老師講課的代碼: |
|
|
來(lái)自: 為什么圖書(shū)館13 > 《待分類(lèi)》