我正在使用spring和hibernate开发一个基于Web的应用程序 - mySql ..我有一个限制,即用户名必须是唯一的。那么哪种方式更有效?使用hibernate criteria
检查用户是否存在?或者在数据库中定义unique
然后使用try catch?
提前致谢..
答案 0 :(得分:3)
你应该同时使用两者。 Hibernate查询将允许在插入之前在功能上检查用户不存在,并返回适当的结果或抛出适当的异常。它比依赖一个唯一约束更好,这个约束会导致事务回滚,并且隐藏在一堆异常中的隐藏错误消息。
但是你也应该有一个唯一的约束来保证唯一性,以防两个并发线程同时检查用户不存在,然后同时插入同一个用户。
对于不需要动态编写的简单查询,我会使用HQL而不是Criteria:更可读的恕我直言。
答案 1 :(得分: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;
}
}