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

And*_*lla 86 java persistence jpa

我很好奇,需要快速找到这个答案.谷歌不会帮助太多.

Java Persistence API具有这些属性,告诉框架在关联实体上级联操作:

CascadeType.PERSIST
CascadeType.DELETE
CascadeType.MERGE
CascadeType.REFRESH
Run Code Online (Sandbox Code Playgroud)

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

但我无法理解其他两个人所取得的成就.救命?

cgp*_*cgp 83

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

  • ALL - 在源实体上执行的所有可能的级联操作都级联到关联的目标.
  • MERGE - 如果合并源实体,则合并将级联到关联的目标.
  • PERSIST - 如果源实体是持久的,则持久化将级联到关联的目标.
  • REFRESH - 如果刷新源实体,则刷新将级联到关联的目标.
  • REMOVE - 如果删除了源实体,则也会删除关联的目标.

我自己这样看待它们(更具可读性):

  • MERGE - 对于现有对象,表中的现有数据与对象中的数据合并.(同步到数据库)
  • PERSIST - 从数据库中的对象创建新记录.
  • REFRESH - 用于刷新对象中的数据.也许数据库需要进行同步更改.(从数据库同步)
  • 删除 - 好吧,删除.

  • 注释的 Javadoc 没有为我澄清任何事情。感谢你的回答! (2认同)

cha*_*aos 75

REFRESH表示"将任何状态更改从数据库拉到我的表示中".级联这很简单; 这意味着刷新所有关联的实体.

MERGE意味着复杂的东西接近"保存",但更像是"将这个分离的实体推回到托管状态并保存其状态变化"; 级联意味着所有关联的实体以相同的方式被推回,并且您从中获取的托管实体句柄.merge()具有与之关联的所有管理实体.

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