Hibernate第四講:Hibernate對象的狀態和映射

一、 Hibernate對象的狀態

    實體對象的三種狀態:
    1) 暫態(瞬時態)(Transient)---實體在內存中的自由存在,它與數據庫的記錄無關。
        po在DB中無記錄(無副本),po和session無關(手工管理同步)
        如:Customer customer = new Customer(); customer.setName("eric");
        這裏的customer對象與數據庫中的數據沒有任何關聯
    2) 持久態(Persistent)---實體對象處於Hibernate框架的管理中。
        po在DB中有記錄,和session有關(session自動管理同步)
    3)遊離態(脫管態)(Detached)
        處於Persistent狀態的實體對象,其對應的Session實例關閉之後,那麼,此對象處於Detached狀態。
        po在DB中有記錄,和session無關(手工管理同步)
      無名態:po處於遊離態時被垃圾回收了。沒有正本,只有DB中的副本。
      po處於暫態時被垃圾回收了,則死亡。(唯一可以死亡的狀態)

    實質上,這三個狀態是:持久對象的正副本與同步的關係
    原則:儘量使用持久態。
 
        暫態--->持久態
            A.調用Session接口上的get()、load()方法
            B.調用Session接口上的save()、saveOrUpdate()方法
        持久態--->暫態
            delete();
        遊離態--->持久態
            update()、saveOrUpdate()、lock();
            (lock不建議用,危險;肯定沒變化時用,有則用updata)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章