QueryDSL与SpringDataJPA学习
2018-02-12 本文已影响481人
程序员Anthony
什么是QueryDSL
- QueryDSL做为一个通用的查询框架,可以在任何支持的ORM框架或者SQL平台上以一种通用的Java API方式来构建类型安全的查询。目前QueryDSL支持的平台包括 JPA,JDO,原生的JDBC,Java Collections,RDF,Lucene,Hibernate,Hibernate Search以及MongoDB 。
- 类型安全(Type safety)和一致性(Consistency)是它设计的两大准则。在 Spring Boot 中可以很好的弥补 JPA 的不灵活,实现更强大的逻辑。
QueryDSL 使用
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-apt</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-jpa</artifactId>
</dependency>
因为是类型安全的,所以还需要加上Maven APT plugin,使用 APT 自动生成一些类:
<project>
<build>
<plugins>
...
<plugin>
<groupId>com.mysema.maven</groupId>
<artifactId>apt-maven-plugin</artifactId>
<version>1.1.3</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>process</goal>
</goals>
<configuration>
<outputDirectory>target/generated-sources</outputDirectory>
<processor>com.querydsl.apt.jpa.JPAAnnotationProcessor</processor>
</configuration>
</execution>
</executions>
</plugin>
...
</plugins>
</build>
</project>
QueryDSL 优点
- IDE的代码提示
- 几乎没有语法来允许无效的查询
- 领域类和属性可以线程安全的引用
- 变更领域类时可以更好的重构