Cog*_*gsy 5 java database persistence jpa cascade
我正在尝试创建一个应用程序,通过观察所有更改,然后立即将对象保存在问题中,使对象模型与数据库保持同步.模型中的许多对象在大型列表或树中都有子项.
当我从数据库加载一个对象时,我依靠单向级联关系来检索它的所有子对象并将它们包含在应用程序中.
但是,可以更改父对象中需要持久性的字段,并且可以确定没有子节点受到影响.所以我想坚持父母,而不是在所有级联的孩子坚持下去的数据库.
例如
@Entity
public class Parent {
@OneToMany(cascade=CascadeType.ALL)
public List children;
}
Run Code Online (Sandbox Code Playgroud)
当我持久保存Parent对象时,如何覆盖级联选项?或者我应该将其设置为REFRESH并确保我永远不需要级联持续存在?
从数据库读取对象并持久化它们依赖于两个不同的注释。
当您加载对象时,它还将获取任何 eager ( FetchType.EAGER
) 关系的另一端,如关系上的 fetch 属性所定义。
根据您的 JPA 提供商,您可能可以选择覆盖此行为。EclipseLink 非常有用QueryHint.BATCH
,当然可以。
当您保留、删除或刷新时,级联类型是相关的。
因此,放弃级联,保持获取并解决问题。
我个人认为级联都是自找麻烦,但意见会有所不同。
一个好的 JPA 提供商已经有一个相当复杂的(可配置的)缓存方案。也许您应该问为什么要重新发明那个特定的轮子?
纯粹为了性能而异步更新的问题吗?还是有别的原因?