加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 运行时的JPA级联选项

发布时间:2020-12-15 01:10:16 所属栏目:Java 来源:网络整理
导读:我正在尝试创建一个应用程序,通过观察所有更改,然后立即将对象保存在问题中,使对象模型与数据库保持同步.模型中的许多对象在大型列表或树中都有子项. 当我从数据库加载一个对象时,我依靠单向级联关系来检索它的所有子对象并将它们包含在应用程序中. 但是,可

我正在尝试创建一个应用程序,通过观察所有更改,然后立即将对象保存在问题中,使对象模型与数据库保持同步.模型中的许多对象在大型列表或树中都有子项.

当我从数据库加载一个对象时,我依靠单向级联关系来检索它的所有子对象并将它们包含在应用程序中.

但是,可以更改父对象中需要持久性的字段,并且可以确定没有子节点受到影响.所以我想坚持父母,而不是在所有级联的孩子坚持下去的数据库.

例如

@Entity
public class Parent {

    @OneToMany(cascade=CascadeType.ALL)
    public List children;

}

当我持久保存Parent对象时,如何覆盖级联选项?或者我应该将其设置为REFRESH并确保我永远不需要级联持续存在?

最佳答案
从数据库中读取对象并持久化它们依赖于两个不同的注释.

加载对象时,它还将获得任何eager(FetchType.EAGER)关系的另一端,如关系上的fetch属性所定义.

根据您的JPA提供程序,您可以选择覆盖此行为. EclipseLink,通过非常有用的QueryHint.BATCH,当然可以.

当您持久,删除或刷新时,级联类型是相关的.

所以,失去级联,保持获取和问题解决.

我个人认为级联都是在寻找麻烦,但意见会有所不同.

一个体面的JPA提供商已经拥有一个非常复杂(可配置)的缓存方案.也许你应该问为什么要重新发明那个特定的轮子?

这是纯粹为了性能而异步更新的问题吗?或者是其他原因?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读