我正在尝试通过在单个查询中获取深层关联来减少查询,从而优化代码。
我四处张望,发现本指南other methods的问题是我找不到作者所指的关于EntityGraphBuilder的任何东西。
User.java中的字段
@OneToMany(cascade = CascadeType.ALL, mappedBy = "user", fetch = FetchType.LAZY)
private Set<Reply> replies = new HashSet<>();
Rating.java中的字段
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "article")
private Article article;
UsersDao.java(要优化的代码)
// Gets user result fully initialize from previous method
public void fetchComplete(User result) {
for (Rating r : ratings) {
if (r != null && r.getArticle().getWriter() != null) {
Hibernate.initialize(r.getArticle().getWriter());
Hibernate.initialize(r.getArticle().getKeywords());
Hibernate.initialize(r.getArticle().getRating());
writers.add(r.getArticle().getWriter());
}
}
}
如上面的代码所示,此方法将执行大量查询,从而显着降低性能,因此必须有一种无需太多查询即可延迟初始化这些字段的方法。
期待您的答复。