Transient:刚new出来的对象

Persistent: sava或者update之后的状态

Detached: close或者clear之后

test函数:

@Test
	public void testSaveWith3State() {
	
		Teacher t = new Teacher();		
		t.setName("t1");
		t.setTitle("middle");
		t.setBirthDate(new Date());  //此时t是transient状态
		
		Session session = sessionFactory.getCurrentSession();
		session.beginTransaction();
		session.save(t);
		System.out.println(t.getId());  //此时是persistent状态
		session.getTransaction().commit();		
		System.out.println(t.getId());  //此时是detached状态
	}

3种状态的区分:

1. 有没有ID? 

2. ID在数据库里有没有?

3. ID在内存里有没有?  

transient: 内存中的一个对象, 没ID,缓存里也没有

persistent:内存里有, 缓存有, 数据库有, 有ID

detached:内存有, 缓存没有, 数据库有,有ID

相关文章:

  • 2021-07-17
  • 2021-07-19
  • 2021-10-28
  • 2022-02-28
  • 2021-11-22
  • 2021-04-19
猜你喜欢
  • 2021-07-28
  • 2021-11-04
  • 2021-07-24
  • 2022-01-01
  • 2021-07-21
  • 2021-09-24
相关资源
相似解决方案