`

hiberante 注解懒加载 配置

阅读更多

如果是EAGER,那么表示取出这条数据时,它关联的数据也同时取出放入内存中 

如果是LAZY,那么取出这条数据时,它关联的数据并不取出来,在同一个session中,什么时候要用,就什么时候取(再次访问数据库)。 

但是,在session外,就不能再取了。用EAGER时,因为在内存里,所以在session外也可以取。 

一般只在一边设Eager,JPA接口默认为一对多为Lazy,多对一为Eager,但是Hibernate反向工程生成Entity时,多对一为Lazy,需要手动改为Eager。

例子:

       //@ManyToOne(cascade = CascadeType.REFRESH,fetch = FetchType.LAZY)
	@ManyToOne(cascade = CascadeType.REFRESH)
	@JoinColumn(name="AccidentEnter")
	public EnterpriseBaseInfo getEnterpriseBaseInfo() {
		return enterpriseBaseInfo;
	}

 

@ManyToOne(optional = true, fetch = FetchType.EAGER)
@JoinColumn(name = "role_id",columnDefinition = "varchar(255) comment '角色id'")
public Role getRole() {
   return role;
}

 optional = true 为可以为空

fetch = FetchType.EAGER 没有懒加载直接查出来

 

 fetch = FetchType.LAZY为懒加载模式

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics