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