2012-07-12 47 views
1

我正在開發一個基於Web的應用程序使用春天和休眠 - mySql ..我有一個限制,用戶名必須是唯一的。那麼哪種更有效率呢?使用hibernate criteria來檢查用戶是否存在?或者在數據庫中定義unique,然後使用try catch?哪個更有效 - > hibernate criteria-mysql查詢?

在此先感謝...

回答

3

您應該同時使用兩者。 Hibernate查詢將允許在功能上檢查用戶在插入之前不存在,並返回適當的結果或拋出適當的異常。這比依賴一個唯一的約束要好得多,這個約束會導致事務回滾,並在一系列異常中隱藏深層隱藏的錯誤消息。

但是,您還應該有一個唯一的約束來保證唯一性,以防兩個併發線程同時檢查用戶不存在,然後同時插入同一個用戶。

對於不需要動態組合的簡單查詢,我會使用HQL而不是Criteria:更可讀的恕我直言。

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; 
     } 
    }