2012-07-12 27 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; 
     } 
    }