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是刷新对象中的数据。 也许有需要同步的数据库的变化。 (从数据库同步)