首页 > Web开发 > 详细

hibernate之三种时态之间的转换

时间:2017-11-18 20:29:36      阅读:398      评论:0      收藏:0      [点我收藏+]

 

判断状态的标准

  oid  和    session相关性

public class HibernateUtils {
	private static SessionFactory sessionFactory=null;
	static{
		//获取config  加载配置文件
		Configuration configure = new Configuration().configure();
		sessionFactory = configure.buildSessionFactory();
	}
	//获取session
	public static Session getSession(){
		Session session = sessionFactory.openSession();
		return session;
	}
}

瞬时态

  瞬时态------持久态

  save和saveOrUpdata操作

	@Test//瞬时态转化为持久态
	public void test02(){
		//获取连接
		Session session = HibernateUtils.getSession();
		//开启事务
		Transaction ts = session.beginTransaction();
		//处于游离态  没有oid  与session无关 
		User user=new User("zhangsan111","123456789","zhangfei","1064705527@qq.com","15029021367",new Date(),"M",1,"0");
		session.save(user);//处于持久态  与session有关  有oid   (瞬时态转化为持久态)
		ts.commit();
		session.close();
	}

  瞬时态------游离态  只需要给一个oid (主键生成策略进行了限定  这样我们只能通过持久态进行转换)

@Test//瞬时态转化为游离态态
	public void test02(){
		//获取连接
		Session session = HibernateUtils.getSession();
		//开启事务
		Transaction ts = session.beginTransaction();
		//处于游离态  没有oid  与session无关 
		User user=new User("zhangsan111","123456789","zhangfei","1064705527@qq.com","15029021367",new Date(),"M",1,"0");
		session.save(user);//处于持久态  与session有关  有oid   (瞬时态转化为持久态)
		ts.commit();
		session.close();
		System.out.println(user.getUid());//处于游离态  有oid  session关闭
	}

持久态

  持久态----瞬时态  delete操作

  

	@Test//持久态转化为瞬时态
	public void test03(){
		//获取连接
		Session session = HibernateUtils.getSession();
		//开启事务
		Transaction ts = session.beginTransaction();
		User u=session.get(User.class,"402898a45fcec558015fcec55d5c0000");//处于持久态  与session有关  有oid   (瞬时态转化为持久态)
		System.out.println(u);
		session.delete(u);
		ts.commit();
		session.close();	
	}

  持久态----游离态   close(关闭session)  clear 清除一级缓存(session)   evict清除以及缓存(指定的缓存) 

@Test//持久态转化为游离态
	public void test03(){
		//获取连接
		Session session = HibernateUtils.getSession();
		//开启事务
		Transaction ts = session.beginTransaction();
		User u=session.get(User.class,"987e21997c134dc4b6538010d101bcef");//处于持久态  与session有关  有oid   (瞬时态转化为持久态)
		ts.commit();
		session.close();
		System.out.println(u);//此时为游离态  有oid  session关闭
	}

游离态

  游离态----持久态

 

@Test//游离态转化为持久态
	public void test04(){
		//获取连接
		Session session = HibernateUtils.getSession();
		//开启事务
		Transaction ts = session.beginTransaction();
		User u=session.get(User.class,"12");//处于持久态  与session有关  有oid   (瞬时态转化为持久态)
		ts.commit();
		session.close();
		u.setUsername("123456");//游离态
		Session session1 = HibernateUtils.getSession();
		//开启事务
		Transaction ts1 = session1.beginTransaction();
		session1.update(u);//持久态
		ts1.commit();
		session1.close();
	}

  游离态----瞬时态

@Test//游离态转化为瞬时态
	public void test04(){
		//获取连接
		Session session = HibernateUtils.getSession();
		//开启事务
		Transaction ts = session.beginTransaction();
		User u=session.get(User.class,"12");//处于持久态  与session有关  有oid   (瞬时态转化为持久态)
		ts.commit();
		session.close();
		u.setUsername("123456");//游离态
		Session session1 = HibernateUtils.getSession();
		//开启事务
		Transaction ts1 = session1.beginTransaction();
		session1.delete(u);//瞬时态
		ts1.commit();
		session1.close();
	}

  

 

hibernate之三种时态之间的转换

原文:http://www.cnblogs.com/fjkgrbk/p/hibernate_state.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!