Querydsl Reference Guide(中文版)
翻译: 白石
开源地址: https://github.com/wjw465150/Querydsl-Reference-Guide-Chinese-version
前言
Querydsl是一个框架,它支持构造静态类型的类似sql的查询。不需要将查询写成内联字符串或外部化到XML文件中,而是可以通过像Querydsl这样的流畅API构造查询。
例如,与简单的字符串相比,使用流畅的API的好处是
- IDE中的代码完成
- 几乎不允许语法上无效的查询
- 可以安全地引用域类型和属性
- 更好地对域类型的更改进行重构
1. 介绍
1.1. 背景
Querydsl诞生于以类型安全的方式维护HQL查询的需求。HQL查询的增量构造需要字符串连接,导致代码难以阅读。通过纯字符串对域类型和属性的不安全引用是基于String的HQL构造的另一个问题。
随着领域模型的不断变化,类型安全在软件开发中带来了巨大的好处。域的变化直接反映在查询中,查询构造中的自动补全使查询构造更加快速和安全。
HQL for Hibernate是Querydsl的第一个目标语言,但现在它支持JPA、JDO、JDBC、Lucene、Hibernate Search、MongoDB、Collections和RDFBean。
如果您是Java数据库访问的新手,https://www.marcobehler.com/guides/a-guide-to-accessing-databases-in-java
包含了对各个部分、选项的良好概述,并向您展示了QueryDSL适合的具体位置。
1.2. 规范
Type safety(类型安全) 是Querydsl的核心原则。查询是根据生成的查询类型构造的,这些查询类型反映域类型的属性。另外,函数/方法调用也是以完全类型安全的方式构造的。
Consistency(一致性) 是另一个重要原则。 查询路径和操作在所有实现中都是相同的,而且 Query 接口有一个共同的基本接口。
要了解 Querydsl 查询和表达式类型的表达能力,请访问 javadocs 并探索 com.querydsl.core.Query
、com.querydsl.core.Fetchable
和 com.querydsl.core.types.Expression
.