狀態圖描述一個對象在不同,Hibernate持久化對象狀態

 2023-11-19 阅读 24 评论 0

摘要:在Hibernate中,持久化對象再被操作過程中分為三個時期.這三個時期和session周期相關. 狀態圖描述一個對象在不同、各自是瞬時(Transient),持久太(persistent)和游離態(Detached) 瞬時狀態 由new命令開辟內存的java對象.比如:Student stu= newStudent();若沒有變量對他引用

Hibernate,持久化對象再被操作過程中分為三個時期.這三個時期和session周期相關.

狀態圖描述一個對象在不同、各自是瞬時(Transient),持久太(persistent)和游離態(Detached)

瞬時狀態

new命令開辟內存的java對象.比如:Student stu= newStudent();若沒有變量對他引用,則被jvm回收.瞬時對象在內存中孤立存在,他的意義僅是攜帶信息的載體,不和數據庫中的數據有不論什么的關聯。通過session的save()和saveOrUpdate()方法能夠把一個瞬時對象與數據庫相關聯,并把瞬時對象攜帶的信息通過配置文件所做的映射插入到數據庫中,這個瞬時對象就成了持久化對象,擁有和數據庫記錄同樣的id標示(Hibernate自己主動將id賦予它)?

? ?瞬時特點:

??? (1)不和Session實例關聯

??? (2)在數據庫中沒有和瞬時對象關聯的記錄

持久態?

持久的實例在數據庫中有相應的記錄.SessionTransction相關聯.sessin,持久對象改變不會立即對數據變更.而必須在Transcation終止,commit,才與數據庫進行同步.在此之前的持久太對象為臟對象.?

使用 find,get ,loaditerater等方法查詢的數據,都是持久對象.若一個瞬時對象被持久對象引用,則該對象也會變為持久對象.?

?假設使用delete()方法,它就會變為瞬時對象;當一個Session運行close()或clear()、evict()之后,持久對象就會變為托管對象。?

??? 持久特點:

??? (1)和Session實例關聯

??? (2)在數據庫中有和持久對象關聯的記錄?

	代碼演示樣例:public void testSave(){Session session =null;Transaction tx=null ;try{session= HibernateUtils.getSesion();tx =session.beginTransaction();//transient 瞬時狀態User user= new User();user.setName("sdf");user.setPassword("hanhan23");user.setCreateTime(new Date());//persistent, ,session引用,po持久session.save(user); //被引用,成為持久狀態//可是為臟對象user.setName("lisd");tx.commit();//}catch(Exception e){e.printStackTrace();tx.rollback();}finally{HibernateUtils.closeSession(session);}//deteached狀態關閉sesion后}

以上演示樣例演示瞬時態轉為持久態對象

?托管狀態

????? 與持久對象關聯的Session被關閉后,對象變為托管。對托管對象的引用依舊有效,對象可繼續被修改。托管對象假設又一次關聯到某個新的Session上,會再次轉變為持久的。托管狀態期間的修改將會被持久化到數據庫。

???? 托管狀態擁有數據庫標識id,所以它能夠通過update()、saveOrUpdate()和lock()等方法,再度與持久層關聯。

???? 托管特點:

???? (1)本質上和瞬時對象同樣

???? (2)僅僅是比瞬時對象多了一個數據庫記錄標識值id

小結:

通過以上三種的對照,認識到,Hibernate中的對象是在session的管理進行數據的持久更新.狀態之間的轉換是與對象的生命周期息息相關.剛創建的內存中為游離態,若一旦被session保存為持久態(或被session引用).一旦sesion關閉或delete變為托管.學習之初,還請多多提意見.

轉載于:https://www.cnblogs.com/blfshiye/p/4297077.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/2/180963.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息