ORM进阶:Hibernate对象的三大状态
来源:互联网 发布:listview加载网络图片 编辑:程序博客网 时间:2024/04/28 19:14
简介
Hibernate负责将实体模型,关联到关系模型。那么在程序运行过程中,如何保证实体对象与数据库中的一致性呢?
首先要了解一下Hibernate对象中的三种状态:
三种状态
- 临时状态(Transient)
- 持久状态(Persistent)
- 游离状态(Detached)
状态的含义
临时状态
在程序中第一次使用该对象。(既然是第一次使用实体对象,那么当然数据库中是没有该记录的)
即:实体模型中存在,但是不被Session管理,数据库中没有该记录。
持久状态
当临时状态的对象,执行save() 或SaveOrUpdate()方法之后,将会被Session管理。从而变成持久状态。这种状态时
即:实体模型存在,而且被Session管理了。数据库中已经存在该记录了(但是由于该记录权限不足,而无法在看到)
游离状态
持久状态的对象,在提交事务之后,将编程游离状态。提交事务,Session将关闭。
此刻的状态为:没有被Session管理,数据库中有该记录
状态转换图
简单实例
public void testSave1(){ Session session=null; Transaction tx=null; try{ session=HibernateUtils.getSession(); tx= session.beginTransaction(); //创建一个新对象 User user=new User(); //Transient状态 user.setName("张三"); user.setPassword("123"); //Persistent状态的对象,当对象的属性发生变化的时候 //Hibernate在清理缓存(脏数据检查)的时候,会和数据库同步 session.save(user); //由Transient状态变为Persistent状态 tx.commit(); //由Persistent状态变为detached状态 }catch(Exception e){ e.printStackTrace(); if(tx!=null){ tx.rollback(); } }finally{ HibernateUtils.closeSession(session); }}
总结
这仅仅是一个非常简单的例子。Hibernate中对象的状态转换关系,每次在执行图中所示的方法的时候 会发生改变。
对于Hibernate对象状态的转换,如果在代码中跟一下,每执行一步,对比看Session和数据库中的记录。很容易就能明白状态是如何转换的了。
1 0
- ORM进阶:Hibernate对象的三大状态
- ORM进阶之Hibernate中对象的三大状态解析
- ORM进阶之Hibernate 的三大对象
- ORM进阶之Hibernate 的三大对象
- 【hibernate进阶】hibernate持久化对象的三种状态
- ORM框架Hibernate (二) 持久化对象的三种状态分析
- Hibernate——对象的三大状态
- hibernate进阶之对象的状态
- 【SSH快速进阶】——探索Hibernate对象的三种状态:Transient、Persistent、Detached
- 学习ORM框架—hibernate(三):跟踪持久化对象状态,掌握对象持久化
- Hibernate的对象的三种状态
- Hibernate的对象的三种状态
- Hibernate的三种对象状态
- hibernate对象的三种状态
- hibernate 实体对象的三种状态
- hibernate对象的三种状态
- Hibernate对象的三种状态
- Hibernate对象的三种状态
- HDU2602Bone Collector 0-1背包问题
- Java多线程 -- 锁
- 【JavaWeb探究】细抠一下web.xml
- #1305:Fermat vs. Pythagoras--注意关键变量清零
- Spring学习(五)spring整合hibernate
- ORM进阶:Hibernate对象的三大状态
- 无锁队列的实现
- 各类排序算法
- 深入理解ArcGIS Engine接口查询技术(QI)
- C语言的内联函数的作用
- 越野跑
- android L 启动流程
- LRU算法
- C++虚函数和虚析构函数小结