java – 运行时的JPA级联选项

前端之家收集整理的这篇文章主要介绍了java – 运行时的JPA级联选项前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

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

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

例如

@Entity
public class Parent {

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

}

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

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

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

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

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

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

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

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

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

原文链接:https://www.f2er.com/java/437548.html

猜你在找的Java相关文章