聲明
Session是一個(gè)持久化管理器,對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作之前,必須先取得Session實(shí)例,相當(dāng)于JDBC在對(duì)資料庫(kù)操作之前,必須取得Connection實(shí)例,Session是Hibernate操作的基礎(chǔ),它不是線程安全的,但是我們可以用ThreadLocal(用于存儲(chǔ)每一個(gè)線程的變量副本,Map中元素的鍵為線程對(duì)象,而值對(duì)應(yīng)線程的變量副本,這樣使每一個(gè)線程都可以獨(dú)立地改變自己的副本,而不會(huì)和其它線程的副本沖突。)來(lái)保證線程的安全性。
狀態(tài)描述
1.瞬時(shí)對(duì)象(Transient Object):
使用new操作符初始化的對(duì)象不能立刻就持久的。它們的狀態(tài)時(shí)瞬時(shí)的,也就是說(shuō)它們沒(méi)有任何跟數(shù)據(jù)庫(kù)相關(guān)聯(lián)的行為,在數(shù)據(jù)庫(kù)中沒(méi)有與之匹配的記錄,還沒(méi)有讓session管理。
總結(jié):
1.沒(méi)有被session管理
2.在數(shù)據(jù)庫(kù)中沒(méi)有與之匹配的記錄
2.持久化對(duì)象(Persistent Object):
持久實(shí)例是任何具有數(shù)據(jù)庫(kù)標(biāo)識(shí)的實(shí)例,它有持久化管理器Session統(tǒng)一管理,持久實(shí)例是在事務(wù)中進(jìn)行操作的一一它們的狀態(tài)事務(wù)結(jié)束時(shí)同數(shù)據(jù)庫(kù)進(jìn)行同步。當(dāng)事務(wù)提交時(shí),通過(guò)執(zhí)行SQL的INSERT、UPDATE和DELETE語(yǔ)句把內(nèi)存中的狀態(tài)同步到數(shù)據(jù)庫(kù)中。
總結(jié):
1. 納入session管理
2.在數(shù)據(jù)庫(kù)中有與之匹配的記錄
3.當(dāng)屬性改變,在清理緩存是(臟數(shù)據(jù)檢查)會(huì)自動(dòng)和數(shù)據(jù)庫(kù)同步
3.離線對(duì)象(Detached Object):
Session關(guān)閉之后,持久化對(duì)象變成為離線對(duì)象。離線表示這個(gè)對(duì)象不能再與數(shù)據(jù)庫(kù)保持同步,它們不能再接受hibernate管理。
總結(jié):
1. 沒(méi)有被Session管理
2. 在數(shù)據(jù)中存在與之匹配的記錄
圖例注解
文字有時(shí)候是蒼白的,如何更好展現(xiàn)自己的思維,需要我們借助圖形的力量,這樣我們的思維更加深刻,請(qǐng)看Session三種狀態(tài)圖,讓你知道狀態(tài)是如何進(jìn)行轉(zhuǎn)化。
(通過(guò)一系列的方法,改變Session狀態(tài))
三種狀態(tài)的區(qū)分:
1. 有沒(méi)有ID,(如果沒(méi)有則是Transient狀態(tài))
2. ID在數(shù)據(jù)庫(kù)中有沒(méi)有
3. 在內(nèi)存里有沒(méi)有(Session緩存)
總結(jié)
想必大家對(duì)Session的狀態(tài)有了一定的了解,那我們就在總結(jié)一下,便于我們理解的區(qū)別。
Transient對(duì)象:隨時(shí)可能被垃圾回收器回收(在數(shù)據(jù)庫(kù)中沒(méi)有于之對(duì)應(yīng)的記錄,應(yīng)為是new初始化),而執(zhí)行save()方法后,就變?yōu)镻ersistent對(duì)象(持久性對(duì)象),沒(méi)有納入session的管理。 ( 內(nèi)存中一個(gè)對(duì)象,沒(méi)有ID,緩存中也沒(méi)有)
Persistent對(duì)象:在數(shù)據(jù)庫(kù)有存在的對(duì)應(yīng)的記錄,納入session管理。在清理緩存(臟數(shù)據(jù)檢查)的時(shí)候,會(huì)和數(shù)據(jù)庫(kù)同步。 ( 內(nèi)存中有、緩存中有、數(shù)據(jù)庫(kù)有(ID)Detached對(duì)象:也可能被垃圾回收器回收掉(數(shù)據(jù)庫(kù)中存在對(duì)應(yīng)的記錄,只是沒(méi)有任何對(duì)象引用它是指session引用),注引狀態(tài)經(jīng)過(guò)Persistent狀態(tài),沒(méi)有納入session的管理。 (內(nèi)存有、緩存沒(méi)有、數(shù)據(jù)庫(kù)有(ID)
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元

