代码之家  ›  专栏  ›  技术社区  ›  André Chalella

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

  •  81
  • André Chalella  · 技术社区  · 16 年前

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

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

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

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

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

    2 回复  |  直到 6 年前
        1
  •  69
  •   chaos    16 年前

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

    合并是指与“保存”近似的复杂内容,但更像是“将此分离的实体推回到托管状态并保存其状态更改”;层叠意味着所有关联的实体都以相同的方式被推回,并且您从中得到的托管实体句柄 .merge() 具有与之关联的所有托管实体。

    Link to one instance of the relevant docs

        2
  •  74
  •   ruben_pants Alaroff    6 年前

    JPA Annotation Meaning for Many to Many relationships :

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

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

    • 合并-对于现有对象,到 合并 表中的现有数据和我的对象中的数据。(同步到数据库)
    • persist-是从数据库中的对象创建新记录。
    • 刷新-刷新对象中的数据。可能数据库中有一个需要同步的更改。(从数据库同步)
    • 删除-是,嗯,删除。