Hibernate对象状态
来源:互联网 发布:三维插值算法 编辑:程序博客网 时间:2024/06/05 05:15
1) 瞬时状态Transient
1> 和数据库记录没有关系,和session没有关系
2> 来源:new出来的对象就是瞬时状态(因为也就是在内存中,和数据库没关系,所以瞬间就没了)
3> 转化为持久化状态:save、saveOrUpdate
4> 说明:对瞬时状态的对象进行任何操作都不会影响数据库
2)持久化状态Persistent
1> 和数据库记录有关系,和session有关系
2> 来源:瞬时状态对象通过save,或者执行查询(如get、load等)
3> 说明:对持久化状态的对象进行操作,Hibernate都可以自动检测到,然后通过sql语句影响到数据库中记录
4> 例子
I. 修改例子:
User user = new User(); user.setName("sky"); session.save(user); user.setName("moon");结果为:
Hibernate: insert into t_user (name) values (?) Hibernate: update t_user set name=? where id=?数据库中显示的名字为moon
说明对持久化状态对象进行操作都可以影响到数据库中记录
II. 生成id例子
User user = new User(); user.setName("sky"); System.out.println(user.getId()); session.save(user); System.out.println(user.getId());结果为:
0 Hibernate: insert into t_user (name) values (?) 12可以看出:持久化状态的对象都是有id的
III. 执行时机例子
User user = new User(); user.setName("sky"); System.out.println("--------"); session.save(user); System.out.println("-----------");结果为:
-------- Hibernate: insert into t_user (name) values (?) -----------可以看出:执行save方法后,就立即执行sql更新数据库,而不是等待commit的时候再一次执行(因为要生成id)
3)游离状态Detached
1> 和数据库中记录有关系,和session没有关系
2> 来源:session通过关闭或者剔除操作,将持久状态对象从session中剔除出来(close,clear,evict)
3> 说明:因为和session无关了,对游离状态对象的操作不能影响数据库中的记录
4) 删除状态
1> 和数据库中记录无关系,和session有关系
2> 来源,session通过delete方法从数据库中删除对象之后对象的状态
- hibernate对象状态
- hibernate中的对象状态
- Hibernate中对象状态
- Hibernate中的对象状态
- hibernate的对象状态
- hibernate对象状态
- Hibernate对象状态
- Hibernate对象状态
- Hibernate对象状态是什么
- Hibernate对象的状态
- Hibernate的对象状态
- hibernate对象状态
- Hibernate 对象状态
- hibernate对象状态
- Hibernate对象状态
- Hibernate对象状态
- Hibernate对象状态
- hibernate 对象状态
- 程序设计
- nutch 无法在 eclipse下调试的问题
- C++容器vector和map的正确删除方法
- POJ3352-Road Construction
- ufldl学习笔记与编程作业:Vectorization(向量化/矢量化)
- Hibernate对象状态
- 工厂模式
- windows程序设计-第七章 BLOKOUT1 备注
- const修饰符
- 学车心得
- hdu2025 查找最大元素
- Install EGIT via eclipse marketplace
- HDU-#2066 一个人的旅行(Floyd & Dijkstra)
- zoj2412 hdu1198