为什么要使用 Querydsl?
Why to use Querydsl?
我是 JPA、JPQL、Hibernate、 的新手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。
我是 JPA、JPQL、Hibernate、 的新手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。