瞬时状态

session没有缓存 数据库没有记录,oid没有值

持久状态

session有缓存 数据库也有记录 oid有值

脱管状态

又称游离状态

session没有缓存 数据库有记录 oid有值

import org.ccit.com.domain.User;
import org.ccit.com.uitls.HibernateUtils;
import org.hibernate.Session;
import org.junit.Test;

import java.util.Date;

/**
* @program: Hibernate_01
* @description
* @author: LIANG
* @create: 2021-03-02 09:11
**/
public class HibernateTest02 {
@Test
public void method01(){
Session session = HibernateUtils.openSession();
session.getTransaction().begin();
//创建一个对象 这个对象就是瞬时状态 对象没有id 数据库中没有记录 session没有缓存
User user=new User("张三","123");
//调用save方法 转化为持久状态 id有值 数据库中有数据 session中有缓存
session.save(user);
// (顺便执行session.get方法 不会出现select语句 因为存在缓存)
session.get(User.class,4);
//将session中数据清除 即为持久状态转化为脱管状态
session.clear();

session.getTransaction().commit();
session.close();
}
}

当执行get load creatQuery creatCriteria等获得的都是持久态数据
瞬时态执行 save update saveOrUpdate之后变为持久状态
持久态转换为托管态
1,session.close() 2,session.clear()清除所有缓存 3,session.evict(obj)清除指定po(缓存)对象