上篇文章讨论了Hibernate的核心对象,在开发过程中经常用到的有JTA、SessionFactory、Session、JDBC,其中SessionFactory可以看做数据库的镜像,使用它能够创建Session对象,JTA用来管理事务,在对象模型修改后同步到数据库中,另外还有Hibernate作为持久层它封装了持久层的转化过程,下面着重讨论持久对象的转换过程。
public void testSave1(){ Session session=null; Transaction tx = null; try{ session=HibernateUtils.getSession(); //开启事务 tx= session.beginTransaction(); //Transient状态 User user=new User(); user.setName("zhangsi"); user.setPassword("123"); user.setCreateTime(new Date()); user.setExpireTime(new Date()); }catch(Exception e){ e.printStackTrace(); if(tx != null){ tx.rollback(); } }finally{ HibernateUtils.closeSession(session); } //detached状态 }
public void testSave2(){ Session session=null; Transaction tx = null; try{ session=HibernateUtils.getSession(); //开启事务 tx= session.beginTransaction(); //Transient状态 User user=new User(); user.setName("zhangsi"); user.setPassword("123"); user.setCreateTime(new Date()); user.setExpireTime(new Date()); //persistent状态 //persistent状态的对象,当对象的属性发生改变的时候 //Hibernate在清理缓存(脏数据检查)的时候,会和数据库同步 session.save(user); user.setName("lisi"); //可以显示的调用udpdate方法,因为此时为持久状态,调用udpate没有什么意义 session.update(user); tx.commit(); }catch(Exception e){ e.printStackTrace(); if(tx != null){ tx.rollback(); } }finally{ HibernateUtils.closeSession(session); }
}
public void testSave3(){ Session session=null; Transaction tx = null; User user=null; try{ session=HibernateUtils.getSession(); //开启事务 tx= session.beginTransaction(); //Transient状态 user=new User(); user.setName("zhangsi"); user.setPassword("123"); user.setCreateTime(new Date()); user.setExpireTime(new Date()); //persistent状态 //persistent状态的对象,当对象的属性发生改变的时候 //Hibernate在清理缓存(脏数据检查)的时候,会和数据库同步 session.save(user); user.setName("lisi"); tx.commit(); }catch(Exception e){ e.printStackTrace(); if(tx != null){ tx.rollback(); } }finally{ HibernateUtils.closeSession(session); } //detached状态 user.setName("wangwu"); try{ session=HibernateUtils.getSession(); session.beginTransaction(); //将detached状态的对象重新纳入session管理 //此时将变为persistent状态的对象 //persistent状态的对象,在清理缓存时会和数据库同步 session.update(user); session.getTransaction().commit(); }catch(Exception e){ e.printStackTrace(); session.getTransaction().rollback(); }finally{ HibernateUtils.closeSession(session); } }
【Hibernate步步为营】--核心对象+持久对象全析(二),布布扣,bubuko.com
【Hibernate步步为营】--核心对象+持久对象全析(二)
原文:http://blog.csdn.net/zhang_xinxiu/article/details/25531813