2016-09-19 66 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.