@ManyToOne
@JoinColumn(name = "play_template_id", table = "team_play_mapping" )
public Play getPlay() {
return play;
}
public void setPlay( Play play ) {
this.play = play;
}
默认情况下,这是急切的加载。我可以得到它,以便它从缓存中读取播放对象而不会使其延迟加载吗?我是否正确,急切加载会强制它进行连接查询,因此没有缓存?
答案 0 :(得分:2)
急切加载和延迟加载是获取策略。这意味着如果您指定“eager”加载,它将尽可能少地执行查询,而如果您指定“lazy”,它将尽可能地发布该对象的查询(冒着执行更多查询的风险)。因此,如果您希望从缓存中检索某些内容,则需要一种延迟加载策略,即:除非必要,否则不要从数据库中检索。
但是,您可以尝试根据执行查询的代码应用某个获取配置文件。例如,在代码的某个时刻,您的查询知道最好是急于加载Play,而后来您知道延迟加载Play会更好。