Выборка EAGER негативно влияет на производительность, поэтому лучше использовать стратегию выборки FetchType.LAZY для всех типов ассоциаций.
Выборка с использованием JPQL:
Product product = entityManager.createQuery(
"select p " +
"from Product p " +
"where p.id = :productId", Product.class)
.setParameter("productId", productId)
.getSingleResult();
Создает следующие операторы SQL SELECT:
Query:{[
select
product0_.id as id1_18_,
product0_.code as code2_18_,
product0_.company_id as company_6_18_,
product0_.importer_id as importer7_18_,
product0_.name as name3_18_,
product0_.quantity as quantity4_18_,
product0_.version as version5_18_
from Product product0_
where product0_.id=?][1]}
Query:{[
select
company0_.id as id1_6_0_,
company0_.name as name2_6_0_
from Company company0_
where company0_.id=?][1]}
В запросах JPQL и Criteria по умолчанию выбирается выборка, поэтому выдается вторичный выбор для каждой отдельной ассоциации EAGER.Чем больше число ассоциаций, тем больше дополнительных отдельных SELECTS, тем больше это повлияет на производительность нашего приложения.
Ссылка: Выборка EAGER - это запах кода при использовании JPA и Hibernate от VLAD MIHALCEA