2016-09-19 1 views

答えて

0

休止状態には、オブジェクト(インスタンス)の3つの状態があります。一時

:オブジェクトは、それが先ほど作成した場合の過渡状態にあるが、なし主キー(識別子)とセッションに関連付けられていないを持っています。

したがって、データベースには永続表現がなく、識別子値は割り当てられていません(つまり、一時オブジェクトに関連するデータベースでは何も行われません(保存/更新))。

永続:セッションがオープンで、あなただけのデータベースからにインスタンスを取得したデータベースまたはインスタンスを保存した場合、オブジェクトは永続的な状態にあります。

デタッチ:セッションがが閉じた場合、オブジェクトはデタッチ状態になります。です。 detached状態の後、lock()メソッドまたはupdate()メソッドを呼び出すと、オブジェクトは永続的な状態になります。

永続インスタンスは、識別子値であるデータベース内の表現を持ち、セッションに関連付けられます。 セッションに関連付けて、一時インスタンスを永続化することができます。

以下のコードは、休止状態のオブジェクトのすべての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. 
関連する問題