hibernate 实体对象的生命周期主要分为三个状态,Transient(瞬态),Persistent(持久态),Detached(游离态)。
1.Transient(瞬态) 表示该实体对象在内存中是自由的,也就是说和数据库没有任何关系。
//创建一个瞬态对象
User user = new User();
user.setName(userName);
user.setPassword("test");
//user仍是一个瞬态对象
2.Persistent(持久态) 是指该实体对象处于Hibernate框架所管理的状态,也就是说这个实体对象与session对象的实例相关。
处于持久太的实体对象最大的特征是对其所做的任何变更操作都将被Hibernate持久化到数据库层。
//创建一个瞬态对象
User user = new User();
user.setName(userName);
user.setPassword("test");
//user仍是一个瞬态对象
Session session = sessionFactory.openSession();
Tansaction tx = session.beginTansaction();
//此时user仍是一个瞬态对象
session.save(user);
//此时user已变为持久态
tx.commit();
Tansaction tx2 = session.beginTansaction();
user.setPassword("pdw");
tx2.commit();
//虽然在这个事物中并没有调用session的save()方法来保存user对象,但是usr处于持久太,
//所以对user对象所做的任何修改都持久化到数据库中
//那么数据库中的密码也变成了pdw
session.close();
另一种方法直接得到持久态的对象:
Session session = sessionFactory.openSession();
Tansaction tx = session.beginTansaction();
User user = (User) session.load(User.class,"key");
//user对象已是持久太对象
tx.commit();
session.close();
3.Detached(游离态)是指处于持久态的对象,当不再与他所对应的Session对象向关联时,这个对象就变成游离态了。
//创建一个瞬态对象
User user = new User();
user.setName(userName);
user.setPassword("test");
//user仍是一个瞬态对象
Session session = sessionFactory.openSession();
Tansaction tx = session.beginTansaction();
//此时user仍是一个瞬态对象
session.save(user);
//此时user已变为持久态
tx.commit();
session.close();
//user对象已经变成游离态
session close完后,对象就变成游离态。
1.Transient(瞬态) 表示该实体对象在内存中是自由的,也就是说和数据库没有任何关系。
//创建一个瞬态对象
User user = new User();
user.setName(userName);
user.setPassword("test");
//user仍是一个瞬态对象
2.Persistent(持久态) 是指该实体对象处于Hibernate框架所管理的状态,也就是说这个实体对象与session对象的实例相关。
处于持久太的实体对象最大的特征是对其所做的任何变更操作都将被Hibernate持久化到数据库层。
//创建一个瞬态对象
User user = new User();
user.setName(userName);
user.setPassword("test");
//user仍是一个瞬态对象
Session session = sessionFactory.openSession();
Tansaction tx = session.beginTansaction();
//此时user仍是一个瞬态对象
session.save(user);
//此时user已变为持久态
tx.commit();
Tansaction tx2 = session.beginTansaction();
user.setPassword("pdw");
tx2.commit();
//虽然在这个事物中并没有调用session的save()方法来保存user对象,但是usr处于持久太,
//所以对user对象所做的任何修改都持久化到数据库中
//那么数据库中的密码也变成了pdw
session.close();
另一种方法直接得到持久态的对象:
Session session = sessionFactory.openSession();
Tansaction tx = session.beginTansaction();
User user = (User) session.load(User.class,"key");
//user对象已是持久太对象
tx.commit();
session.close();
3.Detached(游离态)是指处于持久态的对象,当不再与他所对应的Session对象向关联时,这个对象就变成游离态了。
//创建一个瞬态对象
User user = new User();
user.setName(userName);
user.setPassword("test");
//user仍是一个瞬态对象
Session session = sessionFactory.openSession();
Tansaction tx = session.beginTansaction();
//此时user仍是一个瞬态对象
session.save(user);
//此时user已变为持久态
tx.commit();
session.close();
//user对象已经变成游离态
session close完后,对象就变成游离态。