hibernate 持久层有三种状态
transient 当一个对象new 出来后 还不有被保存时的状态,以数据库里没有与之对应的记录 可以随时被回收
presistent 这一种状态是被session管理的状态,在数据据库中有与之对应的记录 在commit之前可以随便
改里面的记录,在commit里会自动有一个账数据的检查,不同会自动更新,里面的所有变化在commit前
是同步的,
detache 在这个阶段,是save后的段,数据库有了实在的记录,不仅是有对应,已经存进去了,如果再update 就会
回到presistent 的状态
//生成一条数据
public void testInsert() {
Session session = null;
User user= null;
try{
session = HibernateUtils.getSession();
session.beginTransaction();
//transient
user = new User();
user.setName("吕成龙");
user.setPassword("123456");
//presistent
session.save(user);
//修改名字
user.setName("小龙");
//detache
session.getTransaction().commit();
user.setName("大龙");
}catch(Exception e) {
session.getTransaction().rollback();
e.printStackTrace();
}finally {
HibernateUtils.closeSession(session);
}
//update 后又回到了persistent 可以任意更改了,与commit同步
try{
session = HibernateUtils.getSession();
session.beginTransaction();
session.update(user);
session.getTransaction().commit();
}catch(Exception e) {
session.getTransaction().rollback();
e.printStackTrace();
}finally {
HibernateUtils.closeSession(session);
}