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