Rpj*_*Rpj 7 java mysql hibernate
如何查询/表示列表页面中的1对多信息
create users (id, name, ...)
create user_tags (id, user_id, tag_name)
user has 1 to many user_tags
Run Code Online (Sandbox Code Playgroud)
示例数据 - 我希望将表呈现为
user1 tag1,tag2
user2 tag3
user3 tag1
user4
user5 tag5,tag6.tag7
Run Code Online (Sandbox Code Playgroud)
为了构造上表,我必须执行以下操作来构造每一行.
i.e.
select * from users;
for (User user : users) {
// select tag_name from user_tags where user_id = user.id
List<Tag> tags = fetchtags(user)
}
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来获取 用户的缓存标记,因此构建上述用户列表不需要更长的时间.
您的方法中的主要性能问题是查询数据库N+1时间。一次用于所有用户,N 次用于用户标签(N 是用户数量)。您应该使用一个 select 语句来连接两个表。
既然你用我的标签标记了你的问题,hibernate我想你使用了某种 JPA。JPA 中的关键字是JOIN FETCH。一个相关的问题可能是这个。
| 归档时间: |
|
| 查看次数: |
197 次 |
| 最近记录: |