0

有一个父子类如下

@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.getChildren() 的身份访问孩子。但是,由于列表太大,需要大量内存。

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

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

4

1 回答 1

0

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

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

于 2020-12-22T07:19:10.263 回答