微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – 运行时的JPA级联选项

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

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

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

例如

@Entity
public class Parent {

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

}

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

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

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

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

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

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

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐