背景:
我的应用程序正在使用JPA Criteria从数据库中获取数据,并确定与太多SQL调用(对于子实体)到DB的持久性问题。
在此举例:
ENTITY_A (parent) with 500 item types record
ENTITY_B (child-1) with 1000 item details record
ENTITY_C (child-2) with 1000 item details record
ENTITY_D (child-3) with 1000 item details record
根据要求,我们需要获取父实体及其子(所有实体)的数据。子实体已在父实体中与fetch=FetchType.LAZY
映射。
问题:
当我们尝试获取500个项目类型(ENTITY_A)时,将以下列方式调用SQL调用的数量:
我知道一个替代方法是从Criteria切换到SQL Procedure调用(最终将使用SQL类型的SQL调用返回所有数据)
是否有另一种方法可以用这种方式限制对DB的SQL调用?
答案 0 :(得分:0)
在Hibernate中存在一些Lazy Loading的概念
例如:
@JoinColumn(name = "USER_ID", referencedColumnName = "ID")
@ManyToOne(fetch = FetchType.LAZY)
private User userId;
@OneToMany(fetch=FetchType.LAZY)
private List<User> lstUser;
无论何时调用父母。如果获取类型设置为LAZY。只有在您尝试访问该实体时才会触发查询,否则它将不会