【问题标题】:Hibernate: Criteria API vs. QueryDslHibernate:标准 API 与 QueryDsl
【发布时间】:2015-03-12 11:35:52
【问题描述】:

我对 Criteria API 有一些经验,但我以前从未使用过 QueryDsl。我想问的是使用 QueryDsl 而不是 Criteria API 的优点/缺点是什么?尤其是想知道哪个更适合大型数据库(我是指复杂查询)。

【问题讨论】:

    标签: hibernate hibernate-criteria querydsl


    【解决方案1】:

    QueryDSL 是高于标准的抽象级别;此外,它更类似于 SQL,因此对于以前没有接触过 Criteria 的人来说可能更容易学习。

    【讨论】:

      【解决方案2】:

      查询dsl是

      • 更紧凑
      • 类型更安全(至少与 Hibernate Criteria 相比)
      • 更接近 JPQL 语法
      • 也可用于其他后端

      由于我是 Querydsl 贡献者,所以这个答案有偏见。

      【讨论】:

      • 你能解释一下它是如何更安全的吗?使用 TypedQuery(docs.oracle.com/javaee/6/api/javax/persistence/TypedQuery.html),即使使用 Criteria API,我们也可以获得类型安全。不是吗?
      • 目前 QueryDSL 卡在休眠版本 java.libhunt.com/compare-jooq-vs-querydsl
      • @timo 性能怎么样? Hibernate 为会话提供默认缓存。而且我发现,在 Hibernate 标准的情况下(在相同的 DB 配置上),需要分页的查询执行得更好(因为似乎 DSL 进行了我不需要的额外查询)。我做错了吗?
      猜你喜欢
      • 1970-01-01
      • 2019-06-06
      • 1970-01-01
      • 1970-01-01
      • 2012-03-12
      • 2014-12-16
      • 1970-01-01
      • 2013-04-15
      • 2010-12-19
      相关资源
      最近更新 更多