hibernate 实体对象的生命周期

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完后,对象就变成游离态。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值