ili*_*den 4 hibernate lazy-loading
目前,我在hbernate3中观察到以下行为.如果我设置了@BatchSize(size = 5),那么hibernate将在一个SQL查询中获取映射类型的5个子集.
如果我有.setFetchMode("set",FetchMode.JOIN); 然后,hibernate会急切地在单个SQL查询中获取映射类型的所有子集.
但是,当我设置.setFetchMode("commands",FetchMode.SELECT); ,然后hibernate仍然使用批量提取,而不是延迟提取.
有没有办法强制hibernate在设置@BatchSize时使用延迟抓取?
同样的问题适用于设置@Fetch(FetchMode.SUBSELECT)的时间.
如果要以编程方式覆盖这些设置,可以考虑使用@FetchProfile.只需为实体创建一个@FetchProfile:
@FetchProfiles({
@FetchProfile(name = "profileName", fetchOverrides = {
@FetchProfile.FetchOverride(entity = YourEntity.class,
association = "anAssociation",
mode = FetchMode.JOIN),
...
})
})
并在您的服务/存储库方法中启用该配置文件,如:
session.enableFetchProfile( "profileName" );
并且您的自定义提取设置将适用于该会话.
| 归档时间: |
|
| 查看次数: |
2935 次 |
| 最近记录: |