Ho tre entità come segue:Come ottimizzare un JPA Query
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
}
Ora, data di un'istanza di EntityA, voglio ottenere un elenco di EntityC. Al momento ho due opzioni a mia disposizione. Non so quale sia più ottimizzato. Le opzioni sono:
1.
select c from EntityC c where c.entityb in (select b from EntityB b where b.entitya = :entitya)
2. aggiungere una nuova proprietà per EntityB
private Set<EntityC> entityCCol;
@OneToMany(mappedBy="entityb")
public Set<EntityC> getEntityCCol()
{
return entityCCol;
}
select b from EntityB a join fetch a.entityCCol b
Quale di queste due domande è più facile e ottimizzato?
Cosa riguardo 'selezionare c da EntityC c dove c.entityB.entityA =: a'? se crei questa query, e 'crei l'indice IX_B_A sull'entitàB (entityA, id)' la query risultante sarà abbastanza veloce. –