我正在開發一個基於Web的應用程序使用春天和休眠 - mySql ..我有一個限制,用戶名必須是唯一的。那麼哪種更有效率呢?使用hibernate criteria
來檢查用戶是否存在?或者在數據庫中定義unique
,然後使用try catch?哪個更有效 - > hibernate criteria-mysql查詢?
在此先感謝...
我正在開發一個基於Web的應用程序使用春天和休眠 - mySql ..我有一個限制,用戶名必須是唯一的。那麼哪種更有效率呢?使用hibernate criteria
來檢查用戶是否存在?或者在數據庫中定義unique
,然後使用try catch?哪個更有效 - > hibernate criteria-mysql查詢?
在此先感謝...
您應該同時使用兩者。 Hibernate查詢將允許在功能上檢查用戶在插入之前不存在,並返回適當的結果或拋出適當的異常。這比依賴一個唯一的約束要好得多,這個約束會導致事務回滾,並在一系列異常中隱藏深層隱藏的錯誤消息。
但是,您還應該有一個唯一的約束來保證唯一性,以防兩個併發線程同時檢查用戶不存在,然後同時插入同一個用戶。
對於不需要動態組合的簡單查詢,我會使用HQL而不是Criteria:更可讀的恕我直言。
只需使用標準和返回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;
}
}