hibernate中的三种状态

来源:互联网 发布:讲解spring源码的书籍 编辑:程序博客网 时间:2024/05/18 01:58

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

这里写图片描述


以上是转载内容: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状态。

0 0
原创粉丝点击