JPA-如何通过JPA有效地获得父母的所有子女



具有如下的父类和子类

@Entity
class Parent {
@Id
Long id;
@OneToMany(orphanRemoval = true, cascade = CascadeType.ALL)
List<Child> children;
}
@Embeddable
class Child{
@Id
Long id;
// child does not have parent id
}

我使用的是ObjectDB和JPA。我的数据库越来越大,一些父母有50万个孩子。通常,为了获取一个父级的所有子级,我加载parent并通过惰性加载以parent.getChildren((的身份访问子级。但是,由于列表太大,因此需要大量内存。

如何以性能化的方式将特定父级的所有子级作为轻量级DTO对象列表

额外问题:如何有效删除父母的所有子女

将Child设置为可嵌入是一种可能的解决方案。请注意,在这种情况下,不需要id字段,它是未使用的,只会占用空间。您可以通过清除集合来删除可嵌入的子项。

为了提高性能,您可能需要一种不同的设计,其中并非每次都将500K全部加载在一起。

最新更新