hiberante 注解懒加载 配置
程序员文章站
2022-04-17 09:06:26
...
如果是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为懒加载模式