認証時にユーザーのクエリに関するフィードバックを探しています。最初の考えは、以下のコードを書いたときに、データベース内のすべてのユーザー名を照会し、提供されたユーザー名がユーザーのリストに属するかどうかを確認することによってユーザー名を取得することでした。このタイプの検査は、usersテーブルが大きくなるとパフォーマンス上の問題になりますか?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
最初の提案は、クエリを再実行するときにTypedQuery型のキャストが必要です – Warz
どのメソッドを使用していますか? 2番目の場合、EntityNotFoundExceptionを処理する準備が必要です(データベースに対応するレコードがない場合に発生します)。 – Perception