为什么要使用 Querydsl?

Why to use Querydsl?

我是 JPAJPQLHibernate 的新手Querydsl 现在我看到在我的项目中使用 Querydsl 进行查询,我想知道为什么选择这种方法。所以你可以确定为什么在我的项目中,但你可以说出为什么以及在什么情况下 Querydsl 是首选。为什么我们可以使用简单的 JPQL 语句?

  • 您可以在 IDE
  • 中使用代码完成
  • IDE 重构工具工作(或多或少)
  • 类型安全
  • (几乎)语法安全
  • 编译器在编译时生成错误类型等错误,而 Hibernate 则在第一时间抱怨 运行
  • 一致性,可以用同样的原理查询JPA,MongoDB,Collections...

我想对 QueryDSL 的用法做一个对比。

我不喜欢使用 QueryDSL,原因如下:

  • 您需要经常编译项目以保持Q类更新
  • 您需要设置 IDE 以将 target 上生成的 Q 类 视为正常 类.
  • 我已经看过 IDE "get lost" 而不再认识 Q
  • 我已经创建了简单的 QueryDSL 语句,这些语句生成 非常奇怪且不可预测 SQLs.

即使对最终用户友好,我更喜欢使用 JPQL,因为它更接近生成的 SQL 并且更可预测。

但是和Criteria相比,我更喜欢QueryDSL。