hibernate持久化对象的状态
来源:互联网 发布:中国电信网络传真 编辑:程序博客网 时间:2024/06/17 04:14
hibernate持久化对象的状态分类:transient 瞬时态、persistent持久态、detached脱管态
临时状态: 是指对象的数据没有在数据库中保存,对象本身没有在session的缓存管理之中,一般就是对象刚new出来的时候。
持久状态: 是指对象的数据已经在数据库中保存,对象本身也在session的缓存管理之中。
游离状态: 是指对象的数据已经在数据库中保存,但是对象不在session的缓存管理之中。
关系状态换图如下:
![](http://img.blog.csdn.net/20171021100208864?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYmVueGlhb2hhaTg4OA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
你可能会听说有 删除态(第四中状态):给delete专门定义一个状态。
对应的关系状态换图如下:
![](http://img.blog.csdn.net/20171021100251356?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYmVueGlhb2hhaTg4OA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
临时状态: 是指对象的数据没有在数据库中保存,对象本身没有在session的缓存管理之中,一般就是对象刚new出来的时候。
持久状态: 是指对象的数据已经在数据库中保存,对象本身也在session的缓存管理之中。
游离状态: 是指对象的数据已经在数据库中保存,但是对象不在session的缓存管理之中。
关系状态换图如下:
你可能会听说有 删除态(第四中状态):给delete专门定义一个状态。
对应的关系状态换图如下:
下面是演示代码:
public class UserTest {@Testpublic void testSave() {// 创建一个读取主配置文件的对象Configuration cfg = new Configuration();// 读取主配置文件cfg.configure();// 创建Session工厂SessionFactory factory = cfg.buildSessionFactory();// 打开Session// session = factory.openSession();// 如果在主配置文件将session绑定到线程中,所以可以从线程中取出sessionSession session = factory.getCurrentSession();// 开启事务session.beginTransaction();User user = new User();// 此时对象属于临时状态(对象刚刚new出来)user.setUname("孙行者");// 临时状态session.save(user);// 持久化状态// Save() 方法将瞬时对象保存到数据库,对象的临时状态将变为持久化状态。对一个已经持久的对象调用 save()或 update()// 方法是没有意义的。user.setUname("小白");session.save(user);// 无效session.update(user);// 无效session.clear();// session调用clear方法将缓存清空,对象就不在缓存中,游离状态System.out.println(user.getUname());// user对象处于游离状态// 提交事务session.getTransaction().commit();// 关闭sessionsession.close();}@Testpublic void testUpdate() {Configuration cfg = new Configuration();cfg.configure();SessionFactory factory = cfg.buildSessionFactory();Session session = factory.getCurrentSession();// 开启事务session.beginTransaction();User user = session.get(User.class, 1);// 此时对象的状态--持久状态user.setUname("王五");// 由于对象的状态并没有发生改变(持久态)所以对象必然位于 Session 缓冲中,对 user对象所做的变更将 被同步到数据库中。所以// update() 是没有意义的,可以省略// 提交事务session.getTransaction().commit();// 关闭sessionsession.close();}}
阅读全文
0 0
- hibernate的持久化对象的状态
- Hibernate持久化对象的状态
- hibernate 持久化对象的状态
- Hibernate 持久化对象的状态
- Hibernate持久化对象的状态
- Hibernate对象的持久化状态
- Hibernate持久化对象的三个状态
- hibernate持久化对象的三个状态
- Hibernate持久化对象的状态
- Hibernate中持久化对象的状态
- Hibernate 持久化对象的状态
- Hibernate持久化对象的状态
- Hibernate持久化对象的状态
- hibernate持久化对象的状态
- hibernate持久化对象的四个状态
- Hibernate的持久化对象状态
- hibernate持久化对象的状态
- Hibernate持久化对象的三个状态
- 1190: 確率
- wex5的跨域AJAX请求
- 将生成jsp放到非webapps 目录下
- Android踩坑日记:点击变暗效果的ImageView实现原理
- 利用可变列数组实现乘法口诀打印。
- hibernate持久化对象的状态
- 安卓简单发送短信案例-qq盗号案例
- 虚拟机类加载机制
- 面向对象的设计原则
- HDPCD-Java-复习笔记(21)- lab
- 一个32岁入门的70后程序员给我的启示
- 趣图丨真·程序员的日常
- Java赋值问题,如下
- maven实现按需打包指定接口