hibernate中的三种状态

hibernate有三种状态,transient(瞬时状态),persistent(持久化状态)以及detached(离线状态),大家伙也许也知道这三者之间的区别,比如瞬时状态就是刚new出来一个对象,还没有被保存到数据库中,持久化状态就是已经被保存到数据库中,离线状态就是数据库中有,但是session中不存在该对象。

hibernate中的三种状态_第1张图片


以上是转载内容:http://www.cnblogs.com/xiaoluo501395377/p/3380270.html

下面说说自己的理解:

public static void main(String[] args) {
        Student s  = new Student();
        s.setId(2);
        s.setName("dqf");
        s.setAge(22);

        Configuration cfg = new AnnotationConfiguration();
        SessionFactory sf = cfg.configure().buildSessionFactory();
        Session session = sf.openSession();
//      Session session_1 = sf.getCurrentSession();

        session.beginTransaction();
        session.save(s);
        session.getTransaction().commit();
        session.close();
    }

1.首先在内存中有创建一个Student实例,id为2;这个时候student和数据库 一毛钱的关系都没有,称之为transient状态。

2.执行完save方法之后,需要把student作为一个实体存储在数据库中,要把内存中的一个对象存储在数据库中,好像中间还需要个什么东西,我们的理解应该是session吧,此时session中有一个指针指向Student的这个实例。这个时候 Student的实例与数据库是有联系的,这个状态就是persistent状态。

3.执行完close之后,session被关闭,也就是说,内存中Student的实例与数据库中student的这条记录的关系中断了,这个状态就是detached状态。

你可能感兴趣的:(hibernate中的三种状态)