jpa - JPAQuery 和 JPAQueryFactory 的区别
问题描述
JPAQuery 和 JPAQueryFactory 有什么区别?而且,什么时候用哪个?
根据querydsl参考文档:
JPAQuery 和 HibernateQuery 都实现了 JPQLQuery 接口。
对于本章的示例,查询是通过 JPAQueryFactory 实例创建的。JPAQueryFactory 应该是获取 JPAQuery 实例的首选选项。
但是,我无法理解清楚。谁能简要解释一下?
解决方案
重要的是 Hibernates 查询语言 (HQL) 是 JPA 的查询语言 (JPQL) 的超集。Hibernate 也有一种特殊的结果集转换方法,能够迭代可滚动的结果集,而无需保留对内存中所有记录的引用。为了利用这个额外的功能,必须使用theHQLTemplates
和 the 。HibernateHandler
第一个负责序列化其他类型的表达式,第二个负责与 HibernatesQuery
实现的集成。HibernateHandler
实际也是从 获得的,HQLTemplates
所以剩下的就是指定HQLTemplates
。
事实上: a为变量JPAQuery
实例化,其行为与 a 相同。FWIW,如果您提供了一个带有.HQLTemplates.INSTANCE
Templates
HibernateQuery
EntityManager
JPAQuery
Templates
JPAQueryFactory
实际上,是一个工厂方法,它为新实例化的和EntityManager
变量Templates
绑定JPAQueries
。这消除了将这些作为变量单独传递给 a 的每个实例化的需要JPAQuery
。
不需要使用JPAQueryFactory
,但它可以使您的代码更易于阅读。此外,QueryDSL 网站上的许多代码示例都使用查询工厂,因此可以更轻松地将这些示例用作您自己代码中的片段。
推荐阅读
- google-sheets - 在 Google 表格中过滤下拉结果?
- popup - 如何在 Mapbox 中显示多列数据?
- python - 如何读取文件中的特定行?
- mysql - 从2个表中选择值的总和并按公共外键分组
- flutter - AnimatedSwitcher 切换后保持 TextField 键盘打开?
- python - gRPC Python 服务器调用客户端?
- node.js - 为什么运行这个 env-cmd 命令会给我这个错误?
- python - Django:在没有重复页面的情况下从 Chrome 中的 POST 重定向返回
- python - BS4 - 请求 Span 时返回“无”
- git - 使用“main”而不是“master”推送和拉入 GitHub 的正确命令是什么?