从Hibernate标准到JPA标准或QueryDSL

斯蒂芬

我正在考虑将Hibernate标准从旧的DAO层移植到JPA标准或QueryDSL。

由于我从未使用过这两种方法中的任何一种,所以我想知道应该使用哪个API ...

这是休眠标准:

public Page<ElearningSubscription> findWithPatternLike(String searchPattern, int pageNumber, int pageSize) {
    Criteria criteria = getSession().createCriteria(getPersistentClass(), "es");
    criteria.createAlias(DB_TABLE_USER_ACCOUNT, "u", CriteriaSpecification.INNER_JOIN);
    Conjunction conjunction = Restrictions.conjunction();
    String pattern = "%" + searchPattern + "%";
    Criterion firstname = Restrictions.ilike("u.firstname", pattern);
    Criterion lastname = Restrictions.ilike("u.lastname", pattern);
    Criterion email = Restrictions.ilike("u.email", pattern);
    Disjunction disjunction = Restrictions.disjunction();
    disjunction.add(firstname).add(lastname).add(email);
    if (searchPattern.contains(" ")) {
        String[] pieces = searchPattern.split(" ");
        if (pieces[0] != null) {
            Criterion firstnameBis = Restrictions.ilike("u.firstname", pieces[0]);
            disjunction.add(firstnameBis);
        }
        if (pieces[1] != null) {
            Criterion lastnameBis = Restrictions.ilike("u.lastname", pieces[1]);
            disjunction.add(lastnameBis);
        }
    }
    conjunction.add(disjunction);
    OrderList orderList = new OrderList().add(Order.asc("u.firstname")).add(Order.asc("u.lastname")).add(Order.asc("u.email")).add(Order.desc("es.subscriptionDate"));
    Page<ElearningSubscription> page = getPage(pageNumber, pageSize, criteria, orderList);
    return page;
}

感谢您的指导。

亲切的问候,

斯蒂芬·艾伯特

蒂莫·韦斯特坎珀

JPA 2条件是一个官方标准,但是Querydsl在以下方面具有优势

  • 更轻松,更省力的语法
  • 可定制的代码生成
  • 支持多个后端

因为我参与了Querydsl开发,所以这个答案是有偏见的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章