JPA 实体生命周期理解和总结

本文介绍了JPA实体的四种生命周期状态:New、Managed、Detached和Removed。Managed状态的对象在事务提交或em.flush()后才会更新数据库;Detached状态可通过em.merge()将数据同步到数据库;而Removed状态的对象将被删除。理解这些状态对于有效管理JPA实体至关重要。
摘要由CSDN通过智能技术生成

先来一个图

这里写图片描述

jpa 实体生命周期有四种状态

  1. New:瞬时对象,尚未有id,还未和Persistence Context建立关联的对象。

  2. Managed:持久化受管对象,有id值,已经和Persistence Context建立了关联的对象。

  3. Datached:游离态离线对象,有id值,但没有和Persistence Context建立关联的对象。

  4. Removed:删除的对象,有id值,尚且和Persistence Context有关联,但是已经准备好从数据库中删除

Managed状态下的数据保存,更新以及删除数据下的Removed状态,数据都不会立即更新到数据库,只有当你事务提交或者em.flush(),才会立即更新到数据库。

Datached的状态,可以调用em.merge()方法,这个方法会根据实体类的id来更新数据库数据,这时实体类变成了Managed状态。

四种状态总结:

状态名 作为java对象存在 在实体管理器中存在 在数据库存在

New yes no no

Managed yes yes yes

Detached no no no

Removed yes yes no

@Transactional
  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值