Как оптимизировать запрос JPA

У меня есть три объекта следующим образом:

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

Какой из этих двух запросов проще и оптимизирован?

5
задан Dave Newton 12 July 2012 в 13:40
поделиться