zoukankan      html  css  js  c++  java
  • hibernate之三种时态之间的转换

    判断状态的标准

      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();
    	}
    

      

  • 相关阅读:
    poj 2312 Battle City
    poj 2002 Squares
    poj 3641 Pseudoprime numbers
    poj 3580 SuperMemo
    poj 3281 Dining
    poj 3259 Wormholes
    poj 3080 Blue Jeans
    poj 3070 Fibonacci
    poj 2887 Big String
    poj 2631 Roads in the North
  • 原文地址:https://www.cnblogs.com/fjkgrbk/p/hibernate_state.html
Copyright © 2011-2022 走看看