首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Hibernate:多重选择@OneToMany

Hibernate:多重选择@OneToMany
EN

Stack Overflow用户
提问于 2016-02-13 07:20:10
回答 1查看 459关注 0票数 1

我有三个实体:

代码语言:javascript
代码运行次数:0
运行
复制
Users(id, username, password...); BoughtItems(id, userid, itemcat, itemid); ItemCustomizations(id(id of item), slot(id of color), color)

当我在BoughtItems.java中获取这样的信息时:

代码语言:javascript
代码运行次数:0
运行
复制
@OneToMany(fetch = FetchType.EAGER, mappedBy = "id")
@OrderBy("slot")
private List<ItemCustomization> customColors = new ArrayList<>();

Hibernate要求数据库提供每个项目:

代码语言:javascript
代码运行次数:0
运行
复制
Hibernate: select customcolo0_.itemid as itemid1_2_0_, customcolo0_.itemid 
as itemid1_3_0_, customcolo0_.slot as slot2_3_0_, customcolo0_.itemid as 
itemid1_3_1_, customcolo0_.slot as slot2_3_1_, customcolo0_.color as 
color3_3_1_ from shop_customizations customcolo0_ where 
customcolo0_.itemid=? order by customcolo0_.slot

我的问题

如何适当地优化我的映射以减少mysql服务器性能的影响?

我可以以某种方式将查询/项优化为1个查询吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-13 09:20:38

我相信您正在寻找hibernate的批处理大小特性。这里见示例

批处理大小定义了应该加载多少集合。例如,如果您的批处理大小=5会话中有10个BoughtItems,则只会触发两个sql查询来获取所有可能的BoughtItemscustomColors集合。

见hibernate中的可能的取取策略

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35377231

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档