hibernate中的session以及三种状态
2011-04-01 09:46
218 查看
==============================================================================
一、Session的几个主要方法
==============================================================================
1.save,persist保存数据,persist在事物外不会产生insert语句。
2.delete删除对象
3.update,更新对象,如果数据库中没有记录,会出现异常。
4.get,根据Id查询,会立刻访问数据库。
5.load,根据Id查询,(返回的是代理,不会立即访问数据库).
6.saveOrUpdate,merge(根据Id和version的值来确定是save或update),调用merge你的
对象还是托管的.
7.lock(把对象变成持久对象,但不会同步对象的状态).
===============================================================================
二、 提供get的一个例子
==============================================================================
用get方法执行查询的操作,如:
Session s = null;
try{
s = HibernateUtil.getSession();
Class usreClass = User.class;
User user = (User)s.get(userClass,id);
return user;
}catch(){
}finally{
if(s != null){
s.close();
}
}
===============================================================================
三、hibernate中对象的三种状态
===============================================================================
1.瞬时(transient): 数据库中没有数据与之对应,超过作用域会被JVM垃圾回收器回收,
一般是new出来且与Session没有关联的对象。
2.持久(persistent):数据库中有数据与只对应,当前与Session有关联,并且相关联的Session没有关闭,
事务提交时会影响到数据库(hibernate能检测到).
3.脱管(detached):数据库中有数据与之对应,但当前没有Session与之关联,脱管对象状态发生改变,
hibernate不能检测到。
===============================================================================
四、 状态识别
===============================================================================
1.数据库中是否有记录。
2.session是否关闭。
三种状态的区分关键:
1.有没有ID
2.ID在数据库中有没有
3.在内存中有没有(session缓存)
一、Session的几个主要方法
==============================================================================
1.save,persist保存数据,persist在事物外不会产生insert语句。
2.delete删除对象
3.update,更新对象,如果数据库中没有记录,会出现异常。
4.get,根据Id查询,会立刻访问数据库。
5.load,根据Id查询,(返回的是代理,不会立即访问数据库).
6.saveOrUpdate,merge(根据Id和version的值来确定是save或update),调用merge你的
对象还是托管的.
7.lock(把对象变成持久对象,但不会同步对象的状态).
===============================================================================
二、 提供get的一个例子
==============================================================================
用get方法执行查询的操作,如:
Session s = null;
try{
s = HibernateUtil.getSession();
Class usreClass = User.class;
User user = (User)s.get(userClass,id);
return user;
}catch(){
}finally{
if(s != null){
s.close();
}
}
===============================================================================
三、hibernate中对象的三种状态
===============================================================================
1.瞬时(transient): 数据库中没有数据与之对应,超过作用域会被JVM垃圾回收器回收,
一般是new出来且与Session没有关联的对象。
2.持久(persistent):数据库中有数据与只对应,当前与Session有关联,并且相关联的Session没有关闭,
事务提交时会影响到数据库(hibernate能检测到).
3.脱管(detached):数据库中有数据与之对应,但当前没有Session与之关联,脱管对象状态发生改变,
hibernate不能检测到。
===============================================================================
四、 状态识别
===============================================================================
1.数据库中是否有记录。
2.session是否关闭。
三种状态的区分关键:
1.有没有ID
2.ID在数据库中有没有
3.在内存中有没有(session缓存)
相关文章推荐
- hibernate中PO对象的三种状态分析以及session中的一些方法的区别
- hibernate中PO对象的三种状态分析以及session中的一些方法的区别
- Hibernate中对象的三种状态以及Session类中saveOrUpdate方法与merge方法的区别
- Hibernate学习04---Hibernate对象三种状态以及openSessoin/getCurrentSession
- SS4.1_Hibernate_ObjectStatus Hibernate对象三种状态以及openSession/getCurrentSession
- Hibernate中对象的三种状态以及Session类中saveOrUpdate方法与merge方法的区别
- 新手上路之Hibernate(三):持久化对象三种状态以及session的Get()与Load()区别
- 主题:hibernate中session的三种状态
- [Hibernate 2]session的三种状态
- Hibernate---增删改查以及三种状态的转换
- Hibernate 三种状态的区分,以及save,update,saveOrUpdate,merge等的使用
- Hibernate三种状态的区分,以及save,update,saveOrUpdate,merge等的使用
- Hibernate三种状态和Session常用的方法
- Hibernate三种状态的区分,以及save,update,saveOrUpdate,merge等的使用
- Hibernate三种状态 瞬时态,持久态,脱管态 以及 save update merge等
- hibernate中三种状态以及转换
- Hibernate三种状态的区分,以及save,update,saveOrUpdate,merge等的使用
- Hibernate的三种状态以及状态的转换:
- Java程序员从笨鸟到菜鸟之(六十二)细谈Hibernate(十三)session缓存机制和三种对象状态
- hibernate中session的三种状态