刷新和合并在数据库方面意味着什么?

2022-08-31 10:28:15

我很好奇,需要快速找到这个答案。谷歌不会帮上什么忙。

Java 持久性 API 具有以下属性,这些属性告诉框架对关联实体进行级联操作:

CascadeType.PERSIST
CascadeType.DELETE
CascadeType.MERGE
CascadeType.REFRESH

我知道前两个是什么意思:当我坚持对象A有B时,也坚持B,当我删除A时,也删除B。

但我无法理解其他两个人取得了什么成就。帮助?


答案 1

JPA 注释 多对多关系的含义

  • ALL - 对源实体执行的所有可能的级联操作都将级联到关联的目标。
  • MERGE - 如果源实体已合并,则合并将级联到关联的目标。
  • 持久性 - 如果源实体已持久化,则持久性将级联到关联的目标。
  • 刷新 - 如果刷新源实体,则刷新将级联到关联的目标。
  • 删除 - 如果删除了源实体,则关联的目标也将被删除。

我自己是这样看的(更具可读性):

  • MERGE - 对于现有对象,将表中的现有数据与我的对象中的数据合并。(同步到数据库)
  • 持久性 - 从数据库中的对象创建新记录。
  • 刷新 - 是刷新对象中的数据。也许数据库上有需要同步的更改。(从数据库同步)
  • 删除 - 是,好吧,删除。

答案 2

REFRESH的意思是“将数据库中的任何状态更改拉入我的表示形式”。级联这很简单;这意味着所有关联的实体都将刷新。

MERGE意味着近似于“保存”的复杂事物,但更像是“将此分离的实体推回托管状态并保存其状态更改”;级联意味着所有关联的实体都以相同的方式被推回,并且您从中获取的托管实体句柄具有与其关联的所有托管实体。.merge()

链接到相关文档的一个实例


推荐