Hibernate入门BLOG [三、session的常用方法和hibernate对象的3种状态]
2012-06-19 14:50
92 查看
Hibernate中Session的常用方法
在Hibernate中我们经常用session对象去操作数据库的CRUD。下面我们就来分析一下
session的常用方法:
void SessionTest(){
User user = new User();
Session s = HibernateUtil.getSession();
//开始事务
s.beginTransaction();
//清理缓存
s.clear();
//关闭session
s.close();
//跟局ID查询相应对象
s.get(User.class, 5);
//删除对象
s.delete(user);
//将session和数据库进行一次同步
s.flush();
//懒加载。当load一个对象的时候,对象返回的永远都不会为空
s.load(User.class, 4);
//更新,更新完的对象还是处于托管状态
s.merge(user);
//save和persist都是保存。他们的不同点在于
//save如果不开启事务那么会insert一次。但是会rollback回来
//persist如果不开启事务它根本就不会insert。这就是他们的根本区别
s.persist(user);
s.save(user);
}
---------------------------------------------------------------------
Hibernate对象中的三种状态与saveOrUpdate方法:
JavaBean对象对于hibernate的状态:
瞬时状态:我们自己new的对象时一个瞬时对象。
持久对象:数据库中的数据与之对象。它和session是有关系的,当持久化对象发生变化时数据库中的对象能与之对应
托管(游离):数据库中有数据和他对象。但是它和session对象已经没有关系了。它发生变化但是数据库中不会发生相应的变化
托管对象和瞬时对象有什么区别?
1、瞬时对象和数据库没有关系和session也没有关系,生命周期很短
2、托管是说和数据库有数据对应。但是没有在session里面。就算托管对象发生了变化hibernate也不会觉察。
当托管对象需要更新的时候我们就需要调用update方法。如果是持久化对象被修改了那么会运行相关的sql语句改变数据库
saveOrUpdate如何判断是save还是update
根据ID和version来判断。如果如果id为空或者为0那么是瞬时对象那就为save如果id不为空那就可能是托管对象就调用update语句
merge merge更新完之后的对象还是托管对象。非持久对象。而上面的saveOrUpdate操作完的对象为持久化对象
<!-- id表示主键,而name=id指的是类里面的属性。也就是主键对应的属性
unsaved-value设定它是否为瞬时对象的设定。默认会为下面的这个值,
如果不修改的话那么int值为0String值为空
-->
<id name="id" unsaved-value="-1">
<!-- 主键生成器 -->
<generator class="native"/>
</id>
相关文章推荐
- Hibernate入门BLOG [三、session的常用方法和hibernate对象的3种状态]
- 03-Hibernate入门Session的重要方法对象状态
- 对象的三种状态(hibernate的session的get和load方法的区别,session的常用方法,session缓存)
- Hibernate中四种对象状态,Session常用方法,映射类型
- Hibernate对象的三种状态&&Session的常用方法
- 【Hibernate框架开发之五】Hibernate对象的三种状态&&Session的常用方法
- 【Hibernate框架开发之五】Hibernate对象的三种状态&Session常用方法
- Hibernate学习笔记(四)----核心开发接口、对象的三种状态、session常用方法
- hibernate中PO对象的三种状态分析以及session中的一些方法的区别
- hibernate常用的接口和类的方法以及持久化对象的状态变化
- Hibernate三种状态和Session常用的方法
- Hibernate之Session对象的相关方法以及持久化对象的状态
- 【学习笔记】Hibernate中对象的状态和转换以及Session的主要方法总结
- Hibernate入门:CRUD方法及实体对象的三种状态
- Hibernate三种状态和Session常用的方法
- Hibernate,Session方法使得java对象进入持久化状态;持久化对象特征
- 深入学习Hibernate4_05hibernate中对象的四种状态(临时状态,持久化状态,游离状态,删除状态),以及常用方法的介绍
- [原创]java WEB学习笔记79:Hibernate学习之路--- 四种对象的状态,session核心方法:save()方法,persist()方法,get() 和 load() 方法,update()方法,saveOrUpdate() 方法,merge() 方法,delete() 方法,evict(),hibernate 调用存储过程,hibernate 与 触发器协同工作
- Hibernate之Session对象的相关方法以及持久化对象的状态
- Hibernate三种状态和Session常用的方法