SpringとHibernateを使用してWebベースのアプリを開発しています--mySql..ユーザー名は一意である必要があるという制限があります。では、どちらがより効率的な方法ですか?hibernate criteria
ユーザーが存在するかどうかを確認するためにを使用するには?または、データベースで定義unique
してから、try catchを使用しますか?
前もって感謝します..
SpringとHibernateを使用してWebベースのアプリを開発しています--mySql..ユーザー名は一意である必要があるという制限があります。では、どちらがより効率的な方法ですか?hibernate criteria
ユーザーが存在するかどうかを確認するためにを使用するには?または、データベースで定義unique
してから、try catchを使用しますか?
前もって感謝します..
両方を使用する必要があります。Hibernateクエリを使用すると、挿入する前にユーザーが存在しないことを機能的にチェックし、適切な結果を返すか、適切な例外をスローできます。例外のスタック内に深く隠された不可解なエラーメッセージでトランザクションをロールバックさせる一意の制約に依存するよりも優れています。
ただし、一意性を保証するための一意性制約も必要です。2つの同時スレッドの両方がユーザーが同時に存在しないことを確認し、両方が同時に同じユーザーを挿入する場合に備えて。
動的に作成する必要のない単純なクエリの場合は、CriteriaではなくHQLを使用します。はるかに読みやすいIMHOです。
単に基準を使用して、trueまたはfalseを返します。
public boolean clientNameValidation(String clientName) {
Criteria criteriaOfClient = criteria();
criteriaOfClient.add(Restrictions.eq("clientName", clientName));
List<Client> results = (List<Client>) criteriaOfClient.list();
if (results.size() > 0) {
return true;
} else {
return false;
}
}