hibernate对象状态
来源:互联网 发布:买东西怎么使用淘宝客 编辑:程序博客网 时间:2024/06/03 22:55
瞬时(transient):数据库中没有数据与之对应,超过作用域会被jvm垃圾回收器回收,一般是new出来且与session没有关联的对象。
持久(persistent):数据库中有数据与之对应,当前与session有关联,并且相关联的session没有关闭,事务没有提交;持久对象状态发生改变,在事务提交时会影响到数据库(hibernate能检测到)。
脱管(detached):数据库中有数据与之对应,但当前没有session与之关联,脱管对象状态发生改变,hibernate不能检测到。
import org.hibernate.Session;import org.hibernate.Transaction;import com.shizhan.hibernate.domain.UserBean;import com.shizhan.util.HibernateUtil;public class TestHibernate { public static void main(String[] args) {//我们刚创建了一个对象,数据库中没有记录相关联,是瞬时状态UserBean user = new UserBean();user.setUsername("shizhan");user.setPassword("123");//当我们调用了添加之后,数据库有记录与user关联了,可是session关闭了,这时候user的状态为脱管的add(user);UserBean u = get(1);System.out.println(u);}public static void add(UserBean user){Session s =null;try{ s = HibernateUtil.getSession(); Transaction t = s.beginTransaction(); //保存user之后,数据库中有和他相关的记录,且session没有关闭,他属于持久状态 s.save(user); //Hibernate: update UserBean set username=?, password=? where id=? //hibernate会优化我们的更新操作,可以看到两个set操作,他只执行了一个update语句,他更新的时机是在 //事务提交之前的一小会 user.setUsername("heii"); user.setPassword("heii"); t.commit();}finally{ s.close();}}public static UserBean get( int id){Session s =null;UserBean u =null;try{ s= HibernateUtil.getSession(); u = (UserBean) s.get(UserBean.class,id); }finally{ if(s!=null) { s.close(); }}return u ;}}
- hibernate对象状态
- hibernate中的对象状态
- Hibernate中对象状态
- Hibernate中的对象状态
- hibernate的对象状态
- hibernate对象状态
- Hibernate对象状态
- Hibernate对象状态
- Hibernate对象状态是什么
- Hibernate对象的状态
- Hibernate的对象状态
- hibernate对象状态
- Hibernate 对象状态
- hibernate对象状态
- Hibernate对象状态
- Hibernate对象状态
- Hibernate对象状态
- hibernate 对象状态
- 透过项目看程序-新手成长篇
- Havok 解决方案
- C# HttpWebRequest 绝技 根据URL地址获取网页信息
- 十个利用矩阵乘法解决的经典题目-Matrix67
- 利其器--我的编程输入法环境(草稿)
- hibernate对象状态
- Web Service入门
- 在Ubuntu12.04上安装mysql
- POJ 1789 Prim
- c#里的字符串转16进制ASCII
- Java如何获取文件编码格式
- 从Eclipse当中打开一个存在的项目。
- ubuntu修改openssh端口
- 支持HTMl5的浏览器【转】