博客
关于我
Hibernate对象的生命周期
阅读量:340 次
发布时间:2019-03-04

本文共 1540 字,大约阅读时间需要 5 分钟。

持久化对象的状态

1、 瞬时对象(Transient Object):使用new操作符初始化的对象不是立刻就持久的。它们的状态是瞬时的,也就是说它们没有任何跟数据库表相关联的行为,只要应用不再引用这些对象(不再被任何其它对象所引用),它们的状态将会丢失,并由垃圾回收机制回收

2、 持久化对象(Persistent Object):持久实例是任何具有数据库标识的实例,它有持久化管理器Session统一管理,持久实例是在事务中进行操作的----它们的状态在事务结束时同数据库进行同步。当事务提交时,通过执行SQL的INSERT、UPDATE和DELETE语句把内存中的状态同步到数据库中。

3、 离线对象(Detached Object):Session关闭之后,持久化对象就变为离线对象。离线表示这个对象不能再与数据库保持同步,它们不再受hibernate管理。




package cn.siggy.test;import org.hibernate.Session;import org.hibernate.Transaction;import org.junit.Test;import cn.siggy.pojo.User;import cn.siggy.util.HibernateUtil;public class HibernateTest {	@Test	public void testSave(){		Session session=null;		Transaction tx=null;		User user=null;		try {			session = HibernateUtil.getSession();			tx = session.beginTransaction();			//构造对象--瞬时状态			user = new User();			user.setName("芒果");			user.setPwd("9999");			//持久状态,user被session管理,并且id有值--oid			session.save(user);			//在持久状态下;脏数据检查:当提交事务,清理缓存时发现session中数据			//和数据库中数据不一致时,将会把session中的数据更新到数据库中			user.setName("葡萄");			//在保存以后 再修改对象 那么将会产生2条sql语句,那么效率较低,建议在save前修改			session.flush();			tx.commit();		} catch (Exception e) {			e.printStackTrace();			tx.rollback();		}finally{			HibernateUtil.closeSession();		}		//user:游离状态		System.out.println("姓名:"+user.getName());		user.setName("橘子");		try {			session = HibernateUtil.getSession();			tx = session.beginTransaction();			//持久状态//			session.update(user);			session.saveOrUpdate(user);			tx.commit();		} catch (Exception e) {			e.printStackTrace();			tx.rollback();		}finally{			HibernateUtil.closeSession();		}	}		}


你可能感兴趣的文章
蹒跚来迟:新版博客后台上线公测
查看>>
上周热点回顾(9.16-9.22)
查看>>
上周热点回顾(11.4-11.10)
查看>>
[网站公告]11月26日00:00-04:00阿里云RDS升级
查看>>
[网站公告]又拍云API故障造成图片无法上传(已恢复)
查看>>
上周热点回顾(12.16-12.22)
查看>>
云计算之路-阿里云上:对“黑色30秒”问题的猜想
查看>>
云计算之路-阿里云上:“黑色30秒”走了,“黑色1秒”来了,真相也许大白了
查看>>
云计算之路-阿里云上:奇怪的CPU 100%问题
查看>>
云计算之路-阿里云上:2014年6月12日12点IIS请求到达量突降
查看>>
上周热点回顾(6.9-6.15)
查看>>
上周热点回顾(6.16-6.22)
查看>>
上周热点回顾(6.23-6.29)
查看>>
上周热点回顾(10.20-10.26)
查看>>
上周热点回顾(2.16-2.22)
查看>>
上周热点回顾(3.2-3.8)
查看>>
.NET跨平台之旅:借助ASP.NET 5 Beta5的新特性显示CLR与操作系统信息
查看>>
上周热点回顾(7.27-8.2)
查看>>
上周热点回顾(9.28-10.4)
查看>>
上周热点回顾(3.28-4.3)
查看>>