Hibernate 四种状态(临时状态,持久化状态,游离状态,删除状态)

本文深入探讨了ORM中四种关键的状态转换过程,包括从持久状态到游离状态、删除状态的转变,以及临时状态到持久状态的升级。通过具体示例,如使用Hibernate框架的save、load、evict和delete方法,详细解析了每个转换背后的机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

四种关系的转化以及原理图:

 测试以下几种不同的状态变化
       (A)开始-->持久状态-->游离状态-->结束
       (B)开始-->持久状态-->删除状态-->结束
       (C)开始-->临时状态-->持久状态-->游离状态-->删除状态-->结束
       (D)开始-->持久状态-->游离状态-->持久状态-->删除状态-->结束

(A)开始-->持久状态-->游离状态-->结束:

@Test
	public void demo2() {
		Configuration configuration = new Configuration().configure();
		SessionFactory sessionFactory = configuration.buildSessionFactory();
		Session session = sessionFactory.openSession();
		Transaction transaction = session.beginTransaction();

		MyTest mt = session.load(MyTest.class, "1");
		System.out.println("load" + mt);
		session.delete(mt);
        transaction.commit();
	}

(B)开始-->持久状态-->删除状态-->结束

@Test
	public void demo2() {
		Configuration configuration = new Configuration().configure();
		SessionFactory sessionFactory = configuration.buildSessionFactory();
		Session session = sessionFactory.openSession();
		Transaction transaction = session.beginTransaction();

		 MyTest mt = session.load(MyTest.class, "1");
         System.out.println( mt);
		 持久化状态到游离
		 session.close();
         sessionFactory.close();
	}

(C)开始-->临时状态-->持久状态-->游离状态-->删除状态-->结束

 @Test
	 public void demo1() {
	 Configuration configuration = new Configuration().configure();
	 SessionFactory sessionFactory = configuration.buildSessionFactory();
	 Session session = sessionFactory.openSession();
	 Transaction transaction = session.beginTransaction();
	 // 临时状态
	 MyTest myTest = new MyTest();
	 myTest.setId("100");
	 myTest.setName("sdfasdfas");
	
	
	 // 到持久状态
	 session.save(myTest);
	
	
	 // 持久化状态到游离状态
	  session.evict(myTest);

	 //游离状态到删除状态
	 session.delete(myTest);
	 transaction.commit();
	 }

(D)开始-->持久状态-->游离状态-->持久状态-->删除状态-->结束

@Test
	public void demo2() {
		Configuration configuration = new Configuration().configure();
		SessionFactory sessionFactory = configuration.buildSessionFactory();
		Session session = sessionFactory.openSession();
		Transaction transaction = session.beginTransaction();

        //持久化状态
		MyTest mt = session.load(MyTest.class, "1");

		System.out.println(mt);

		// 持久化状态到游离
		 session.evict(mt);

		// 游离到持久化状态
		MyTest myTest = new MyTest();
		myTest.setName("名字胜多负少234");
		session.saveOrUpdate(myTest);

        // 持久化状态到删除状态
		session.delete(mt);
		transaction.commit();
	}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值