判断状态的标准
oid 和 session相关性
public class HibernateUtils {private static SessionFactory sessionFactory=null;static{//获取config ?加载配置文件Configuration configure = new Configuration().configure();sessionFactory = configure.buildSessionFactory();}//获取sessionpublic 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