`
Aga
  • 浏览: 214595 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

Session基本操作

阅读更多
evict\clear的使用:
		User usr = (User)session.get(User.class, new Long(1));
		session.close();
		
		usr.setNickName("james");
		
		Session session2 = HibernateSessionFactory.getSessionFactory().openSession();
		session2.beginTransaction();
		User usr2 = (User)session2.get(User.class, new Long(1));
		session2.clear();//session2.evict(usr2);
		System.out.println(session2.contains(usr2));
		session2.update(usr);
		usr2.setNickName("html");		
		session2.getTransaction().commit();
		session2.close();

Session::evict(),Session::clear()方法都可以把一个persistent对象变成一个detached对象。在本例中因为调用了evict才可以持久化游离态对象,否则因为session2有一个usr2的persistent对象,调用update会引发异常。

lock的使用之一:
		User usr = (User)session.get(User.class, new Long(1));
		session.close();
		
		Session session2 = HibernateSessionFactory.getSessionFactory().openSession();
		session2.beginTransaction();
		session2.lock(usr, LockMode.NONE);//persistent
		usr.setNickName("aga");//update
		session2.getTransaction().commit();
		session2.close();

利用lock使原本处于transient状态的usr重新和session2相关联,成为persistent状态。当然,一定要在persistent状态之后更新usr才能生效。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics