REFRESH和MERGE在数据库方面意味着什么?

我很好奇,需要快速find答案。 谷歌帮不了多less忙。

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

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

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

但我无法理解其他两个人的成就。 帮帮我?

REFRESH的意思是“从数据库中将任何状态变化引入到我的表示中”。 级联这很简单; 这意味着所有关联的实体都被刷新了。

MERGE意味着一些复杂的近似“保存”,但更像是“将这个分离的实体推回到受控状态并保存其状态变化”。 级联意味着所有关联的实体都以相同的方式被推回,并且从.merge()返回的被pipe理实体处理具有与之关联的所有被pipe实体。

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

JPA注释多对多关系的含义 :

  • 所有 – 在源实体上执行的所有可能的级联操作被级联到关联的目标。
  • MERGE – 如果源实体合并,合并级联到关联的目标。
  • PERSIST – 如果源实体被持续存在,则坚持被级联到该关联的目标。
  • 刷新 – 如果源实体刷新,刷新级联到关联的目标。
  • 移除 – 如果源实体被移除,关联的目标也被移除。

我自己看到他们这样(更可读):

  • PERSIST是从数据库中的对象创build新的logging。
  • 删除就是删除。
  • 对于现有对象,MERGE将表中的现有数据与我的对象中的数据合并 。 (同步到数据库)
  • REFRESH是刷新对象中的数据。 也许有需要同步的数据库的变化。 (从数据库同步)