2、三种状态的区分关键在于:
a)、有没有ID
b)、ID在数据库中有没有
c)、在内存中有没有(session缓存)
3、三种状态:
a)、transient:内存中一个对象,没有ID,缓存中也没有
b)、persistent:内存中有,缓存中有,数据库在ID
c)、detached:内存有缓存没有数据库有ID
Transient意思是刚刚new 出来,没有设ID,当调用了save或saveOrUpdate(),它会转成另外一个状态叫persistent,persistent状态是有ID的,一半persist(evict(),close(),clear())这时就变成Detached
Transient状态:
t.setName("t1");
t.setTitle("middle");
t.setBirthDate(new Date());
Persistent状态:
Session session = sessionFactory.getCurrentSession();
session.beginTransaction();
session.save(t);
************************
@Test
public void testSaveWith3State() {
Teacher t = new Teacher();
t.setName("t1");
t.setTitle("middle");
t.setBirthDate(new Date());
Session session = sessionFactory.getCurrentSession();
session.beginTransaction();
session.save(t);
System.out.println(t.getId());
session.getTransaction().commit();
System.out.println(t.getId());
}