1

SpringとHibernateを使用してWebベースのアプリを開発しています--mySql..ユーザー名は一意である必要があるという制限があります。では、どちらがより効率的な方法ですか?hibernate criteriaユーザーが存在するかどうかを確認するためにを使用するには?または、データベースで定義uniqueしてから、try catchを使用しますか?

前もって感謝します..

4

2 に答える 2

3

両方を使用する必要があります。Hibernateクエリを使用すると、挿入する前にユーザーが存在しないことを機能的にチェックし、適切な結果を返すか、適切な例外をスローできます。例外のスタック内に深く隠された不可解なエラーメッセージでトランザクションをロールバックさせる一意の制約に依存するよりも優れています。

ただし、一意性を保証するための一意性制約も必要です。2つの同時スレッドの両方がユーザーが同時に存在しないことを確認し、両方が同時に同じユーザーを挿入する場合に備えて。

動的に作成する必要のない単純なクエリの場合は、CriteriaではなくHQLを使用します。はるかに読みやすいIMHOです。

于 2012-07-12T05:51:18.360 に答える
0

単に基準を使用して、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;
        }
    }
于 2012-07-12T12:54:18.280 に答える