Java 使用hibernate时的性能问题';限制。在';

Java 使用hibernate时的性能问题';限制。在';,java,hibernate,hibernate-criteria,criteria-api,Java,Hibernate,Hibernate Criteria,Criteria Api,我在Oracle中有一个表:UserDetail[id,name,country]。问题陈述是使用Hibernate从给定输入列表的列表中获取其“名称”的所有“UserDetail”实体。最明显的解决方案是使用hibernate criteria api中的“Restrictions.in”: //Session Construction code List<String> usernames = getUserNames(); Criteria criteria = sess

我在Oracle中有一个表:UserDetail[id,name,country]。问题陈述是使用Hibernate从给定输入列表的列表中获取其“名称”的所有“UserDetail”实体。最明显的解决方案是使用hibernate criteria 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();
//会话构造代码
List usernames=getUserNames();
条件=session.createCriteria(UserDetail.class);
标准。添加(限制。在(“名称”,用户名))//用户名->用户名列表
列表用户=criteria.List();
问题是,如果列表(用户名)的大小大约为10k,并且数据库中的用户数量大约为1000万,那么是否会出现性能问题。希望了解性能问题是什么,以及使用这种过滤器获取数据集的替代方法是什么


提前感谢

如果此用户名列表是通过某种查询确定的,我建议您将该查询作为子查询嵌入,因为这样通常会执行得更好。如果列表是由用户提供的,那么除了您已经拥有的之外,您没有什么可以做的。

最好的方法可能是尝试一下。我想这应该不是问题,只要“name”列的索引正确