1
我的应用程序使用Hibernate从数据库检索数据。今天我调试了我的应用程序,偶然发现了EAGER的负载。休眠加载所有实体忽略懒惰加载
@Table(name = "orders")
@Entity
public class Order implements Serializable {
@OneToMany(fetch = FetchType.EAGER, mappedBy = "order", cascade = CascadeType.ALL, orphanRemoval = true)
private List<DishQuantity> dishes = new ArrayList<>();
}
我改成了延迟加载这样的:
@OneToMany(fetch = FetchType.LAZY, mappedBy = "order", cascade = CascadeType.ALL, orphanRemoval = true)
private List<DishQuantity> dishes = new ArrayList<>();
当我使用DAO我得到的结果如预期拨打电话从服务到数据库,延迟加载实体不再可用:
但是当我要查询并尝试使用实体管理器获取实体时,我收到以下内容:
它看起来像Hibernate反正加载所有实体,但交易关闭后,迟缓的实体将被丢弃,对不对?但无论如何,它从DB获得所有实体,并且根本没有提高数据库性能。有没有办法强制Hibernate即使在事务过程中也不加载LAZY实体并减少数据库负载?