hibernate--对象的三种状态Transient,Persistent,Detached

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

posted @ 2016-04-21 11:23  wujixing909  阅读(629)  评论(0编辑  收藏  举报