一、 对象的三种状态(hibernate管理的对象)
1. 临时状态
对象的临时状态,形容也就是这个对象(进行了实例化操作的对象)未被 session 会话进行 save 操作或者是这个对象被 session 会话进行了 delete 操作,处于一个可用但不用的状态,有一种备用的感觉
- //此时再通过delete操作,将对象student变为 临时态
- session.delete(student);
- //对象实例化,此时的s对象为 临时态
- Student s = new Student();// 未进行 save 操作
2. 持久状态
对象的持久状态,证实了这个对象的来源是由hibernate 通过 session 的 get 操作 亦或是 进行了 save 操作而获得的持久态对象,是被 hibernate 所管理的对象
- s.setSid(99999);
- s.setSname("xxxxx");
- //通过session会话的save方法,将s对象状态变为 持久态
- session.save(s);
- //通过get方法获得对象,s对象状态变为 持久态
- Student student = session.get(Student.class, 1);
- //再次获取session会话,通过update操作,将游离态对象student变为 持久态
- session = SessionFactoryUtil.getSession();
- session.update(student);
3. 游离状态
游离状态,一个持久态对象因为 hibernate 不需对它进行管理时,关闭 session 会话, 不对其进行操作, 此时的对象状态就变为了游离状态
- //关闭会话,对象状态变为 游离态
- session.close();
注:hibernate是通过管理对象来操作数据,这里对象指的是持久化对象;hibernate中的三种状态的对象是可以相互转换的,通常编码时只关注持久态对象。关注get、save、update方法所操作后的对象
奉上一图