【发布时间】:2021-07-02 16:52:06
【问题描述】:
我在 Oracle 中有一个表:UserDetail[id, name, country]。问题陈述是使用 Hibernate 从给定输入列表的列表中获取“名称”的所有“UserDetail”实体。最明显的解决方案是使用休眠标准 api 中的“Restrictions.in”:
//Session Construction code
List<String> usernames = getUserNames();
Criteria criteria = session.createCriteria(UserDetail.class);
criteria.add(Restrictions.in("name", usernames)); //usernames -> List of usernames
List<UserDetail> users = criteria.list();
问题是如果列表(用户名)的大小为 10k 并且数据库中存在的用户数大约为 1000 万左右,是否会有任何性能问题。想知道性能问题是什么,以及使用这种过滤器获取数据集的替代方法是什么。
提前致谢
【问题讨论】:
-
找出答案的最佳方法可能是尝试一下。我想这应该不是问题,前提是“名称”列已正确编入索引
标签: java hibernate hibernate-criteria criteria-api