Hibernate实体状态解析:瞬态、持久态与游离态

Hibernate 中持久化实体的状态是 ORM 框架的核心概念,用于描述实体对象与数据库记录及 Session 之间的关联关系。根据搜索结果,Hibernate 实体状态主要分为以下三种(部分资料提到四种状态,但主流分类为三种):


一、三种核心状态定义

  1. 瞬时状态(Transient)

    • 特征
      • 对象通过 new 创建,无持久化标识(OID),未被 Session 管理;
      • 数据库无对应记录,JVM 回收后对象消失。
    • 示例
      User user = new User(); // 瞬时态对象
      
  2. 持久状态(Persistent)

    • 特征
      • 对象已通过 save()/persist() 绑定 Session,拥有 OID;
      • 数据库存在对应记录,且 Session 会跟踪其变更(自动同步到数据库)。
    • 自动更新机制
      修改持久态对象属性后,Hibernate 通过脏检查(Dirty Checking)在事务提交时自动更新数据库。
  3. 游离状态(Detached)

    • 特征
      • 曾为持久态,但因 Session 关闭或调用 evict()/clear() 而脱离管理;
      • 保留 OID,但变更不再自动同步到数据库。
    • 示例
      session.close(); // 原持久态对象转为游离态
      

二、状态转换方法

转换方向 触发方法 说明
瞬时态 → 持久态 session.save()session.persist() save() 立即分配 OID,persist() 延迟到事务提交。
持久态 → 游离态 session.close()</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码的余温

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值