Hibernate4-Session概述&Hibernate對象的三種狀態(tài)

在繼續(xù)學習之前,我還是覺得有必要和大家來扯扯jpa與Hibernate之間的關(guān)系。JPA全稱Java Persistence API.是java5.0的一個規(guī)范,而hibernate可以看作這個規(guī)范的實現(xiàn)。就像接口和類的關(guān)系一樣叽唱,jpa是接口,hibernate是類嘶卧;但是這里要注意一下尔觉,是hibernate先流行起來了后才有了jpa凉袱。

Session概述

????Session是Hibernate向應(yīng)用程序提供操縱數(shù)據(jù)的最主要的接口芥吟,也是hibernate的核心接口,他提供了基本的保存专甩,修改钟鸵,刪除,添加和加載操作涤躲。
????Session緩存棺耍,有的叫Session緩存也有的叫一級緩存,位于緩存中的對象稱為持久化對象种樱,他和數(shù)據(jù)庫中的記錄是一一對應(yīng)的蒙袍,如果我們數(shù)據(jù)庫有兩天記錄,id為1嫩挤,name為’張三’害幅,pwd為’123’、id為2岂昭,name為’李四’以现,pwd為’1234’;如果我們這個時候查詢出這兩條記錄约啊,那么在Session緩存中會存放這兩條記錄的對象邑遏,兩個對象的屬性與兩條記錄的字段值相同。注意:Session能夠在某個時間點恰矩,按照緩存中對象變化來執(zhí)行sql語句记盒,這一過程稱為刷新緩存。
????站在持久化角度外傅,hibernate把對象分為三種狀態(tài):持久狀態(tài)纪吮、臨時狀態(tài)蹂午、游離狀態(tài)。Session的特定方法彬碱,可以將對象從一種狀態(tài)轉(zhuǎn)換成另一種狀態(tài)豆胸。

對象的三種狀態(tài)

三種狀態(tài)

通過上面的圖片可以更好的看出我們執(zhí)行什么方法的時候,對象就會變成某種狀態(tài)巷疼。
1.瞬時狀態(tài)(Transient)
????通過New創(chuàng)建對象晚胡,對象沒有立即持久化,此時Java對象的狀態(tài)為瞬時狀態(tài)嚼沿。Session對瞬時狀態(tài)的java對象是一無所知的估盘,此對象不在被別的對象引用時,java虛擬機會在一定時間段回收次對象骡尽。
2.持久狀態(tài)(Persistent)
????當對象與Session關(guān)聯(lián)遣妥,被Session管理時,該對象就處于持久狀態(tài)攀细。
3.游離狀態(tài)(Detached)
????處于持久狀態(tài)的對象箫踩,脫離與其關(guān)聯(lián)的Session管理后,對象就處于游離狀態(tài)谭贪。

狀態(tài)轉(zhuǎn)換:

1.瞬時狀態(tài)轉(zhuǎn)為持久狀態(tài)
????通過Session對象的save()境钟、saveOrUpDate()方法保存對象或者使用get()、load()方法獲取對象俭识。
2.持久狀態(tài)轉(zhuǎn)為瞬時狀態(tài)
????執(zhí)行Session的delete()方法后慨削,對象由持久狀態(tài)轉(zhuǎn)為瞬時狀態(tài)。
3.持久狀態(tài)轉(zhuǎn)為游離狀態(tài)
????執(zhí)行Session的evict()套媚、clear()缚态、close()方法,對象由持久狀態(tài)轉(zhuǎn)為游離狀態(tài)堤瘤。
4.游離狀態(tài)轉(zhuǎn)為持久狀態(tài)
????重新獲取Session對象玫芦,執(zhí)行Session對象的update()、saveOrUpdate()方法將對象從游離狀態(tài)變?yōu)槌志脿顟B(tài)宙橱,也就是說通過這兩個方法姨俩,可以將對象重新與Session關(guān)聯(lián)。
5.游離狀態(tài)轉(zhuǎn)為瞬時狀態(tài)
????執(zhí)行Session的delete()方法师郑。

注:處于瞬時狀態(tài)或游離狀態(tài)的對象不在被其他對象引用時环葵,會被java虛擬機回收。

有的人也說hibernate中對象有四種狀態(tài)宝冕,會多一種刪除狀態(tài)张遭,因為在執(zhí)行delete()方法刪除數(shù)據(jù)的時候,對象會處于刪除狀態(tài)地梨,當關(guān)閉session的時候?qū)ο筇幱谂R時狀態(tài)菊卷。我個人還是傾向于說三種狀態(tài)缔恳,delete()方法刪除后,對象直接處于臨時狀態(tài)洁闰。

配圖
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末歉甚,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子扑眉,更是在濱河造成了極大的恐慌纸泄,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,252評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件腰素,死亡現(xiàn)場離奇詭異聘裁,居然都是意外死亡,警方通過查閱死者的電腦和手機弓千,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評論 3 399
  • 文/潘曉璐 我一進店門衡便,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人洋访,你說我怎么就攤上這事镣陕。” “怎么了捌显?”我有些...
    開封第一講書人閱讀 168,814評論 0 361
  • 文/不壞的土叔 我叫張陵茁彭,是天一觀的道長。 經(jīng)常有香客問我扶歪,道長,這世上最難降的妖魔是什么摄闸? 我笑而不...
    開封第一講書人閱讀 59,869評論 1 299
  • 正文 為了忘掉前任善镰,我火速辦了婚禮,結(jié)果婚禮上年枕,老公的妹妹穿的比我還像新娘炫欺。我一直安慰自己,他們只是感情好熏兄,可當我...
    茶點故事閱讀 68,888評論 6 398
  • 文/花漫 我一把揭開白布品洛。 她就那樣靜靜地躺著,像睡著了一般摩桶。 火紅的嫁衣襯著肌膚如雪桥状。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,475評論 1 312
  • 那天硝清,我揣著相機與錄音辅斟,去河邊找鬼。 笑死芦拿,一個胖子當著我的面吹牛士飒,可吹牛的內(nèi)容都是我干的查邢。 我是一名探鬼主播,決...
    沈念sama閱讀 41,010評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼酵幕,長吁一口氣:“原來是場噩夢啊……” “哼扰藕!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起芳撒,我...
    開封第一講書人閱讀 39,924評論 0 277
  • 序言:老撾萬榮一對情侶失蹤实胸,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后番官,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體庐完,經(jīng)...
    沈念sama閱讀 46,469評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,552評論 3 342
  • 正文 我和宋清朗相戀三年徘熔,在試婚紗的時候發(fā)現(xiàn)自己被綠了门躯。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,680評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡酷师,死狀恐怖讶凉,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情山孔,我是刑警寧澤懂讯,帶...
    沈念sama閱讀 36,362評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站台颠,受9級特大地震影響褐望,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜串前,卻給世界環(huán)境...
    茶點故事閱讀 42,037評論 3 335
  • 文/蒙蒙 一瘫里、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧荡碾,春花似錦谨读、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至拨脉,卻和暖如春哆姻,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背女坑。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評論 1 274
  • 我被黑心中介騙來泰國打工填具, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 49,099評論 3 378
  • 正文 我出身青樓劳景,卻偏偏與公主長得像誉简,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子盟广,可洞房花燭夜當晚...
    茶點故事閱讀 45,691評論 2 361

推薦閱讀更多精彩內(nèi)容