Hibernate中的对象状态
对象分为三种状态:
瞬时状态:没有id没有于session关联
持久化状态 :有id,和seeion有关联
游离托管状态:有id,没有于session关联
public void testadd() {
//获得session
Session session=HibernateUitels.opensession();
//控制事物
Transaction tx = session.beginTransaction();
//执行操作
Student s=new Student();//没有id,瞬时状态,没有在session缓存中
s.setName("张三");//瞬时状态
//save其实不能理解为保存,是将瞬时状态转换成持久化状态的方法
//主键自增:执行save方法时,为了将对象转换为持久化状态,必须生成id值,所以要执行insert语句生成
//主键生成策略使用的是increment,执行save方法,为了生成id,会执行查询id最大值的sql语句
session.save(s);//有id,持久化状态,在session缓存中
//提交事物,关闭资源
tx.commit();
session.close();//seeion关闭,游离或托管状态,有id,没有关联,没有在session缓存中
}
三种状态的装换图: