日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Hibernate的Session介绍[转 adoocoke]

發(fā)布時間:2025/7/14 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hibernate的Session介绍[转 adoocoke] 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Session

Session是Hibernate向應用程序提供操作數(shù)據(jù)的主要接口, 他提供了保存、更新、刪除、加載Java對象的方法。

Session的緩存

Session有一個緩存,用來緩存Java對象。一般的數(shù)據(jù)庫操作,都要從先從Session的緩存中獲取,如果緩存中獲取不到,hibernate才會去數(shù)據(jù)庫中獲取。

緩存的作用

緩存的作用不言而喻。1、減少數(shù)據(jù)訪問的頻率。2、保持保證數(shù)據(jù)相關記錄與緩存中的同步。

清理緩存

Session的save、update、delete方法,只有在清理緩存的時候才向數(shù)據(jù)庫中執(zhí)行一條Sql語句。所以,Session清理緩存的時間點,是個關鍵概念。

Session會在一下幾個時間點清理緩存,并執(zhí)行相關語句:

a、當應用程序調(diào)用org.hibernate.Transactioncommit()方法的時候,commit()方法先清理緩存,然后再向數(shù)據(jù)庫提交事務。 b、當應用程序通過HibernateQuery查詢接口等執(zhí)行查詢操作時,如果緩存中持久化對象的屬性發(fā)生了變化,就會先清理緩存,以保證查詢結果能反映持久化對象的最新狀態(tài)。 c、當應用程序顯式調(diào)用Sessionflush()方法的時候。?

Java對象在Hibernate中的狀態(tài)

介紹緩存的方法之前,先介紹一下java對象在緩存中的幾種狀態(tài),以便更好的立即緩存對對象的操作。

臨時狀態(tài):通過new方法新創(chuàng)建的對象,還沒有持久化到數(shù)據(jù)庫中,也不在Session的緩存中, 此時的對象處于臨時狀態(tài)。對象也成為臨時對象。

持久化狀態(tài):對象被持久化,同時已經(jīng)加入到緩存中。此時的對象也被稱為持久化對象。

刪除狀態(tài):對象不在Session緩存中Session也計劃將其從數(shù)據(jù)庫中刪除。此時的對象也被稱為刪除對象。

游離狀態(tài):已經(jīng)被持久化,但沒有加載到Session緩存中,稱為游離狀態(tài),此時的對象也被稱為游離對象。

Session接口中的方法

1、save()和persist()

????? save方法將一個臨時對象變?yōu)橐粋€持久化對象。并為對象生成OID主鍵。同時,執(zhí)行一條insert語句就,將對象存儲在數(shù)據(jù)庫中。(save并不立即執(zhí)行Sql insert語句,而是在Session清理緩存的時候才執(zhí)行)

????? save和persist都是將java對象持久化到數(shù)據(jù)庫中的方法。他們的區(qū)別在于,persist方法不保證立即為持久化對象生成OID主鍵,而是在Session清理緩存的時候才為OID生成

2、get()和load()

????? get()和load()都是根據(jù)OID從數(shù)據(jù)庫中獲取一個Java對象。

????? 區(qū)別:a、數(shù)據(jù)庫中沒有OID對應的對象時,get返回null,load拋出ObjectNotFoundException。

?????????????? b、load默認使用“延遲檢索策略”,而get使用“立即加載策略”。關于這兩個策略的介紹請看《Hibernate的檢索策略》

3、update()

???? update方法更新java對象的某些屬性,并能夠使一個游離對象轉變?yōu)橐粋€持久化對象。同樣,update也不是立即執(zhí)行,也是在清理緩存的時候執(zhí)行,并且在執(zhí)行前才組裝update語句, 也就是說,它只會組裝最后一次設置的對象的屬性值

4、saveOrUpdate()

????? saveOrUpdate方法,兼有save和update的功能,它會判斷傳入的對象狀態(tài),如果是臨時對象, 就執(zhí)行save如果是游離對象,就執(zhí)行update。判斷方法有:OID是否為null、

????? 是否具有version版本控制屬性并為null,id和version的unsaved-value屬性是否與對應的值相等、是否設置了攔截器邏輯的isUnsaved返回true。

5、delete()

????? delete方法可以刪除持久化對象,也可以刪除游離對象。它先將游離對象與session相關聯(lián),然后準備一條sql語句,然后對象從session中刪除,最后等待Session在清理緩存的時候才執(zhí)行sql語句。

6 、flush()

????? flush會使Session立即清理緩存,并指向相關數(shù)據(jù)庫Sql語句,但不會提交事務

7、commit()

????? commit方法會調(diào)用flush清理緩存,執(zhí)行Sql,并并提交事務

8、merge()

????? 處于游離狀態(tài)的對象是不能執(zhí)行update語句的,否則hibernate會拋出NotUniqueObjectException異常,如何能夠將游離狀態(tài)的對象在恢復到持久化狀態(tài)呢。使用merge方法就可以辦到。merge方法能夠?qū)⒁粋€游離對象的屬性復制到持久化對象中。

下面是對象的狀態(tài)轉換圖(來自網(wǎng)絡),從這個圖中我們可以看到狀態(tài)轉換和Session中方法的調(diào)用關系。

轉載于:https://www.cnblogs.com/wukong0214/archive/2013/01/23/2874030.html

總結

以上是生活随笔為你收集整理的Hibernate的Session介绍[转 adoocoke]的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲国产私拍精品国模在线观看 | 中文字幕丰满人伦在线 | 日韩精品成人av | 思思99re | 草逼视频网 | 亚洲免费一区视频 | 亚欧美精品 | 在线免费91 | 美女88av | 国产精品视频一区二区在线观看 | 国产欧美一区二区精品性色99 | 日一日射一射 | 伊人夜夜| 国产人妖在线观看 | 久久国产精品无码一级毛片 | 全黄一级裸片视频 | 亚洲欧美自拍视频 | 91影视在线观看 | 亚洲同性gay激情无套 | 欧美怡红院视频 | 久草最新视频 | 欧美成网 | 成人午夜av| 日韩三级麻豆 | 美女隐私直播 | a无一区二区三区 | 日韩视频在线观看视频 | 日韩一区二区免费看 | 黄色特级网站 | 欧洲av无码放荡人妇网站 | 日本作爱视频 | 一区二区免费在线视频 | 久久网一区二区 | 国产999| 午夜肉伦伦 | 久久艹这里只有精品 | 亚洲骚图 | 伊人av网站| 日日夜夜一区二区 | 一个人看的视频www 色就是色网站 | www.自拍| 激情综合网五月激情 | 日韩有码av| 男女调教视频 | 韩国欧美三级 | 夜夜精品视频 | 911美女片黄在线观看游戏 | 黄色小视频在线免费看 | 爱情岛论坛自拍亚洲品质极速最新章 | av观看国产| 国模私拍视频在线 | 黑人巨大精品欧美一区二区免费 | 国产三级精品三级在线 | 日韩欧美视频免费在线观看 | 国产免费麻豆 | 久久高清一区 | 国产1页 | 麻豆系列| 泷泽萝拉在线播放 | 成人小视频在线播放 | 中文字字幕一区二区三区四区五区 | 欧美一区二区福利视频 | 日日射天天干 | 精品人妻少妇嫩草av无码专区 | 国产成人精品一区二区在线小狼 | 亚洲欧美天堂网 | 最好看的中文字幕 | 国产精品久久久久久久久久久久午夜片 | 国产精品美女www爽爽爽视频 | 国产黄网站 | 一区一区三区产品乱码 | 婷婷丁香综合网 | 男欢女爱久石 | 丰满熟女人妻一区二区三区 | 闫嫩的18sex少妇hd | 99久视频| 日本打白嫩屁股视频 | 99精品视频免费版的特色功能 | 99热日韩 | 色翁荡息又大又硬又粗又爽 | 成人动漫亚洲 | 精品乱子伦一区二区 | 黄网站在线观看视频 | 永久国产 | 亚洲国产综合视频 | 啪啪福利视频 | 日本不卡视频在线播放 | 欧美老女人性视频 | 亚洲精品一区三区三区在线观看 | 韩日av在线 | 日本免费不卡一区二区 | 欧美黄色片免费看 | 黄色大片在线播放 | 精品少妇一区二区三区免费观 | 国产无码精品在线观看 | 插我舔内射18免费视频 | 欧美激情片一区二区 | 欧美卡一卡二卡三 | 日本精品一区二区三区在线观看 |