说起Querydsl这里不得不提及一些目前Java开源界十分火爆的框架,例如Hibernate。随着Hibernate中Criteria查询的普及似乎越来越多的朋友喜欢以API的方式来构建SQL查询了(笔者周围的很多朋友都是如此,貌似因为方便重构所以才这样,不过某些时候性能是个问题),当然这并不是说HQL不受欢迎,恰恰相反,在一些需要较高性能的地方无论是HQL还是SQL都十分受欢迎,也是较Criteria更加高效的手段之一。但无论是Criteria还是HQL在大量编写之后猛然转型回SQL查询,很多朋友都感觉到相当的不适应,至少笔者在使用Hibernate 5年之后感觉的确如此。
该Querydsl登场了,今天笔者带来的是一款名为Querydsl的通用查询框架。与Hibernate等ORM工具不同的是,Querydsl仅仅是一个通用的查询框架,之专注于通过Java API构建类型安全的SQL查询。Querydsl可以通过一组通用的查询api为用户构建出适合不同类型ORM框架或者是SQL的查询语句。也就是说 Querydsl是基于各种ORM框架以及SQL至上的一个通用的查询框架。借助Querydsl可以在任何支持的ORM框架或者SQL平台上以一种通用的API方式来构建查询。目前Querydsl支持的平台包括JPA,JDO,SQL,Java Collections,RDF,Lucene,Hibernate Search。
说说Querydsl的优势吧:
1. Querydsl支持代码自动完成,因为才纯Java API编写查询,因此主流Java IDE对起的代码自动完成功能支持几乎可以发挥到极致(因为是纯Java代码,所以支持很好)
2. Querydsl几乎可以避免所有的SQL语法错误(当然用错了Querydsl API除外,因为不写SQL了,因此想用错也难)
3. Querydsl采用Domain类型的对象和属性来构建查询,因此查询绝对是类型安全的,不会因为条件类型而出现问题
4. Querydsl采用纯Java API的作为SQL构建的实现可以让代码重构发挥到另一个高度(这也是Criteria让笔者十分喜爱的主要原因之一)
5. Querydsl的领一个优势就是可以更轻松的进行增量查询的定义
说了这么多之后,各位看官是否对Querydsl已经产生了兴趣呢?至少笔者对这个很有创意的小工具十分感兴趣,因此笔者在使用HQL构建查询的时候也曾经试图编写一个简单的查询条件构造器。现在看来Querydsl不但已经实现了笔者的想法而且其高度远在笔者至上了。不过Querydsl虽然好也需要开发团队对起使用进行一定的考量。
* 首先Querydsl并不使用现有的任何POJO进行查询构建,而是根据现有的配置生成对应的Domain Model进行查询构建,因此对于使用Hibernate的朋友回多出一组Model来
* 其次开发团队需要熟悉和了解Querydsl API,或者这不是一个十分漫长的过程,但毕竟需要学习成本,对于一个使用成熟框架的开发团队而言,这些是否需要。
不过对于笔者来说Querydsl带来的并不仅仅是使用上的方便,更是对查询理念上的一个改观,同时也是对目前各种ORM框架查询语言的一个升华吧。可能每个ORM框架无论是Hibernate还是EJB或者JDO都有着自己的一套查语言和语法的解析,笔者也觉得他们做的足够好,但如果想使用相同的语法风格在不同的ORM框架上进行操作呢?或者Querydsl会给出我们一个更好的解决方案吧。
想了解更多关于Querydsl的内用可以去官方网址看看,官方的文档还是很不错的说。
from:
http://xiexiejiao.cn/java/querydsl-1-9-5-release-download.html
分享到:
相关推荐
springmvc +shiro+querydsl+jpa框架多数据源配置详细说明,文档包含详细配置说明,测试通过
Querydsl 能够诞生, 是因为需要在类型安全的方式下进行HQL查询。 构造的HQL查 询需要拼接字符串, 并且会导致代码难以阅读。 通过纯字符串对领域类型和属性的 不安全引用是基于字符串构建HQL的另一个问题。 随着...
Querydsl是一个Java开源框架用于构建类型安全的SQL查询语句。它采用API代替拼凑字符串来构造查询语句。可跟 Hibernate 和 JPA 等框架结合使用。 基本查询: JPAQuery query = new JPAQuery(entityManager); ...
Querydsl是一个Java开源框架用于构建类型安全的SQL查询语句。它采用API代替拼凑字符串来构造查询语句。可跟 Hibernate 和 JPA 等框架结合使用。 Querydsl API文档,标准接口使用例
Querydsl 是一个能使用静态类型构建类似于SQL的查询的框架。Querydsl 通过流 畅的API调用来构建原本需要用字符串连接或外部XML文件配置的查询....
Querydsl是一个框架,可用于为多个后端(包括JPA,MongoDB和Java中SQL)构造类似类型安全SQL的查询。 可以通过流利的API来构造查询,而不是将查询编写为内联字符串或将其外部化为XML文件。 入门 使用这些教程开始 ...
springdata-jpa-querydsl
压缩包里面有两个jar,queyrdsl-jpa-3.7.4.jar、querydsl-apt-3.7.4.jar
querydsl中文文档,旨在帮助使用QueryDSL的开发程序人员使用
springData使用queryDsl,详细看http://blog.csdn.net/xiejx618/article/details/51480265
springboot2.x整合querydsl4.3.1例子
querydsl-zh_CN.pdf
学习queryDsl最好的教材,掌握第一手资料,大家一起进步啊
使用SQL或JPQL动态或命名查询,Criteria API或Querydsl编写持久性查询的比较,以及在单元测试中运行的示例查询。 设置 为了在本地运行JUnit测试,您需要根据配置来设置数据库。 例如,当使用NetBeans IDE 8.0时: ...
Querydsl-POC 为什么使用 Querydsl ? 类型安全查询(从实体生成的 QClasses 查询,不涉及字符串!) 通过 IDE 和自动完成进行查询验证 动态查询(与 HQL 字符串相比) 简单的语法(与标准相比) 此 POC 使用:...
jbosscc-javaee6-modular-ear-archetype.zip,maven原型生成基于java ee 6的模块化项目框架。
querydsl
springboot框架 一、Spring Boot基础应用 Spring Boot特征 概念: 约定优于配置,简单来说就是你所期待的配置与约定的配置一致,那么就可以不做任何配置,约定不符合期待时才需要对约定进行替换配置。 特征: 1. ...