gpt4 book ai didi

java - 查询用户时 JPA 潜在的性能问题

转载 作者:太空宇宙 更新时间:2023-11-04 08:17:23 25 4
gpt4 key购买 nike

寻找有关在身份验证时查询用户的一些反馈。在编写下面的代码时,我的第一个想法是通过查询数据库中的所有用户名并检查提供的用户名是否属于用户列表来获取用户名。当用户表增长时,这种类型的检查会成为性能问题吗?

    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
}

}

最佳答案

是的,这将是一个性能问题,随着用户数量的增加,问题会变得更加严重。绝对不要这样做。

你应该这样做:

try {
User user = (User)entityManager.createQuery("SELECT user FROM Users user where user.username = :username")
.setParameter ("username", username);
.getSingleResult();
userFoundFLAG = 1;
} catch (NoResultException e) {
//There is no user with this username - do something
} catch (NonUniqueResultException e) {
//There is more than one user with this username - do something
}

关于java - 查询用户时 JPA 潜在的性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10200820/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com