哪个更有效 - > hibernate criteria-mysql查询?

时间:2012-07-12 04:10:29

标签: mysql hibernate spring-mvc

我正在使用spring和hibernate开发一个基于Web的应用程序 - mySql ..我有一个限制,即用户名必须是唯一的。那么哪种方式更有效?使用hibernate criteria检查用户是否存在?或者在数据库中定义unique然后使用try catch?

提前致谢..

2 个答案:

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