寻找上进行身份验证时查询用户的一些反馈时JPA潜在的性能问题。我在编写下面的代码时首先想到的是通过查询数据库中的所有用户名并检查提供的用户名是否属于用户列表来获取用户名。当用户表增长时,这种类型的检查会成为性能问题吗?查询用户
EntityManager entityManager = factory.createEntityManager();
/*Create a data structure to hold a list of users in our database*/
List<String> allUsernames = new ArrayList<String>();
allUsernames = entityManager.createQuery("SELECT user.username FROM Users user").getResultList();
/*Loop through each user in our available usernames checking if the username passed exists*/
for (String user : allUsernames) {
if (user.equals(username)) {
System.out.println("Found real user\n");
userFoundFLAG = 1; // set the flag equal to 1 when this user is found
}
}
当我修改这个方法来查询用户名作为参数传递的用户对象,如果用户名不存在,它失败。查询结束返回一个空对象 – Warz 2012-04-18 00:00:06
你的第一个建议要求类型TypedQuery,因为它retruns您使用哪种方法查询 –
Warz
2012-04-18 00:06:47
的投?如果第二个则需要准备处理EntityNotFoundException(如果数据库中没有相应的记录,则会发生这种情况)。 – Perception 2012-04-18 00:07:14