gpt4 book ai didi

java - 如何优化 JPA 查询

转载 作者:搜寻专家 更新时间:2023-10-31 20:04:43 24 4
gpt4 key购买 nike

我有如下三个实体:

public class EntityA
{
private Long id;
//Getters and setters
}

public class EntityB
{
private Long id;
private EntityA entitya;
//Getters and setters
}

public class EntityC
{
private Long id;
private BigDecimal amount;
private EntityB entityb;
//Getters and setters
}

现在,给定一个 EntityA 实例,我想获得一个 EntityC 列表。我目前有两个选择。我不知道哪个更优化。选项是:

1.
select c from EntityC c where c.entityb in (select b from EntityB b where b.entitya = :entitya)

2。向 EntityB 添加新属性

private Set<EntityC> entityCCol;

@OneToMany(mappedBy="entityb")
public Set<EntityC> getEntityCCol()
{
return entityCCol;
}

select b from EntityB a join fetch a.entityCCol b

这两个查询中哪个更简单和优化?

最佳答案

这取决于集合的大小。对于小型集合,我会使用对象模型中的关系。更多的是从设计/可用性的角度而不是性能,它更面向对象。我不会加入获取它,只是正常访问模型。您可能还应该建立从 A 到 B 的关系,以使您的模型更有用。

对于 #1 中的查询,您的查询使用子选择不是很有效,只需使用连接,

从 EntityC c 中选择 c,其中 c.entityb.entitya = :entitya

关于java - 如何优化 JPA 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11447180/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com