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

      

  • 相关阅读:
    java算法----------常用的加密算法
    java多线程---------java.util.concurrent并发包----------等待多线程完成
    java多线程---------java.util.concurrent并发包----------ThreadPoolExecutor
    java多线程---------java.util.concurrent并发包
    一头扎进Spring之---------Spring核心容器----------
    深入理解java集合框架之---------Linked集合 -----构造函数
    深入理解java集合框架之---------Arraylist集合 -----添加方法
    深入理解java集合框架之---------Arraylist集合 -----构造函数
    深入理解java集合框架之---------HashMap集合
    linux输出与查看的几种方式
  • 原文地址:https://www.cnblogs.com/fjkgrbk/p/hibernate_state.html
Copyright © 2020-2023  润新知