Querydsl解决Hibernate类型安全性痛点
作为最广泛使用的Java ORM框架之一,Hibernate(以及密切相关的JPA标准)提出了一种与SQL非常相似的基于字符串的查询语言HQL(JPQL)。这种方法的明显缺点是缺乏类型安全性和缺少静态查询检查。
意思是在正常情况下我们在Hibernate写sql如下:
Query q = em.createNativeQuery("SELECT a.firstname, a.lastname FROM Author a where a.firstname='David' ");
因为sql脚本在双引号中,当字段名或者类型改变了,编译过程是不知道的,直到运行时崩溃,才能发现字段名改变了或者类型改变了。 在开发阶段,数据库字段改变是常有的事情。Querydsl就是为了解决安全检查缺失。
引入Querydsl后,不用写sql语句了,而是一段一段拼接起来的java代码,相同的sql语句转化的java代码如下:
QAuthor author = QAuthor.author;
JPAQueryFactory queryFactory = new JPAQueryFactory( entityManager );
Author c = queryFactory.select(author.firstname,author.lastname).from(author )
.where(author.firstname.eq("David"))
.fetchOne();
【Querydsl解决Hibernate类型安全性痛点】这时候如果字段有任何改动,程序编译不通过的,完美解决痛点。
推荐阅读
- parallels|parallels desktop 解决网络初始化失败问题
- 考研英语阅读终极解决方案——阅读理解如何巧拿高分
- MybatisPlus|MybatisPlus LambdaQueryWrapper使用int默认值的坑及解决
- SpringBoot调用公共模块的自定义注解失效的解决
- 解决SpringBoot引用别的模块无法注入的问题
- Spark|Spark 数据倾斜及其解决方案
- 解决SyntaxError:|解决SyntaxError: invalid syntax
- Spectrum|Spectrum 区块偶尔停止同步问题排查与解决笔记
- 一劳永逸地解决词汇量不够的问题
- Hexo代码块前后空白行问题