2016-09-19 61 views

回答

0

hibernate中有3個對象(實例)狀態。

瞬態:對象是在過渡狀態下,如果剛剛創建它,但具有沒有主鍵(標識符)和不與會話相關聯的

因此,它在數據庫中沒有持久表示,並且沒有分配標識符值(即,與瞬態對象相關的數據庫中沒有任何操作(保存/更新))。

持久:對象是持久化狀態,如果會話開放,你只是保存實例數據庫或檢索從數據庫的實例。

獨立:對象是在分離狀態下,如果會話是關閉。在分離狀態之後,如果調用lock()或update()方法,則對象將變爲持久狀態。

持久實例在數據庫中有一個表示形式,一個標識符值並與一個Session相關聯。 您可以通過將其與會話關聯來使暫時實例持久化。

在下面的代碼示出了對象的所有3個狀態中的休眠:

Employee e1=new Employee(); 
    e1.setName("Rohit"); 
    Employee e2=new Employee(); 
    e2.setName("Glenn"); 
    //The above objects e1 & e2 are in transient state. 

    SessionFactory sessionFactory=HibernateUtil.getSessionAnnotationFactory(); 
    Session session=sessionFactory.openSession(); 
    Transaction tx=session.beginTransaction(); 

    session.persist(e1); 
    session.persist(e2); 
    //now, the objects e1 & e2 are in persistent state. 

    tx.commit(); 
    session.close(); 

    e1.setName("Mitchell"); 
    e1.setName("Joe"); 
    //now objects e1 & e2 are in detached state.