hibernate的持久化对象的三种状态及转换
来源:互联网 发布:惠普服务器数据恢复 编辑:程序博客网 时间:2024/06/07 06:33
直接进入主题:
1.hibernate持久化对象的状态分类:transient瞬时态、persistent持久态、detached脱管态
瞬时态:session没有缓存数据,数据库没有对应的数据。例如:new 一个新的对象
持久态:session缓存数据,数据库中最终将会有数据。例如:执行save(user)方法
脱管态:session没有缓存,数据库中有数据。例如:session.close() / new User().setUid(1)
在某些地方你还会听说另外他有一种状态(即四种状态)删除态:给delete专门定义一个状态。但官方并承认,但是给出第四种状态也并无没有设么争议。
2.关系状态换图
3.具体代码
Session session = null; Transaction tx = null; User user = null; try { session = HibernateUtils.getSession(); tx = session.beginTransaction(); //Transient状态,临时状态,一经save就会转变到Persistent状态 user = new User(); user.setName("<span style="font-family:宋体;">张三</span>"); user.setPassword("<span style="font-family:宋体;">1234</span>"); //Persistent状态,持久化状态(数据库中有相同的值与之对应),当属性发生改变时,hibernate会自动与数据库同步,不需要update,update的实质不是更新数据,而是转换状态。 session.save(user); user.setName("<span style="font-family:宋体;">李四</span>"); tx.commit(); }catch (Exception e){ e.printStackTrace(); tx.rollback(); }finally { HibernateUtils.closeSession(session); } //Detached状态,游离状态,session关闭之后,便由persistent状态变为Detached状态 try{ session = HibernateUtils.getSession(); session.beginTransaction(); user.setName("<span style="font-family:宋体;">王五</span>"); //在Detached状态下,更新对象的属性,需要update才能反映到数据库 session.update(user); session.getTransaction().commit(); }catch(Exception e){ e.printStackTrace(); session.getTransaction().rollback(); }finally{ HibernateUtils.closeSession(session); }
1 0
- hibernate的持久化对象的三种状态及转换
- 【hibernate进阶】hibernate持久化对象的三种状态
- hibernate的持久化对象的三种状态
- Hibernate持久化对象的三种状态
- Hibernate持久化对象的三种状态
- Hibernate持久化对象的三种状态
- Hibernate持久化对象的三种状态
- Hibernate持久化对象的三种状态 .
- Hibernate持久化对象的三种状态
- Hibernate之持久化对象的三种状态
- Hibernate持久化对象的三种状态
- Hibernate持久化对象的三种状态
- hibernate持久化对象的三种状态
- Hibernate持久化对象的三种状态
- Hibernate持久化对象的三种状态
- 【SSH框架】--Hibernate持久化对象的三种状态
- 【Hibernate】——持久化对象的三种状态
- 【SSH系列】-- Hibernate持久化对象的三种状态
- VS2010中添加lib库引用
- 一次线上的GC问题排查
- WebStorm license server破解
- Ubuntu下ssh服务的安装
- jsp中通添加java代码
- hibernate的持久化对象的三种状态及转换
- linux上使用wget下载oracle jdk
- spark 读取hbase中的数据
- ElasticSearch java API (1)
- asp.net Textbox获取焦点并且内容全选
- 网络虚拟化技术(二): TUN/TAP MACVLAN MACVTAP
- Elasticsearch java API (2)
- hibernate5.2使用注解方式进行增删改查
- swift3.0和Objective-C交互事项(转)