JPAQuery 和 JPAQueryFactory 有什么区别?并且,什么时候使用哪个?
根据querydsl参考文档:
JPAQuery 和 HibernateQuery 都实现了 JPQLQuery 接口。
对于本章的示例,查询是通过 JPAQueryFactory 实例创建的。JPAQueryFactory 应该是获取 JPAQuery 实例的首选选项。
但是,我无法清楚地理解。谁能简单解释一下吗?
重要的是 Hibernate 查询语言 (HQL) 是 JPA 查询语言 (JPQL) 的超集。Hibernate 还有一种特殊的结果集转换方法,能够迭代可滚动的结果集,而无需保留对内存中所有记录的引用。为了利用这个额外的功能,必须使用theHQLTemplates和 the 。HibernateHandler第一个负责序列化附加类型的表达式,第二个负责与 HibernateQuery实现集成。实际上也是HibernateHandler从 获得的HQLTemplates,因此剩下的就是指定HQLTemplates。
事实上:变量的JPAQuery实例化与的行为相同。FWIW,如果您提供一个带有 构造的实例,那么会自动为您的 ORM 供应商推导出适当的实现。HQLTemplates.INSTANCETemplatesHibernateQueryEntityManagerJPAQueryTemplates
实际上,这只是一个工厂方法,它为新实例化的和变量JPAQueryFactory绑定。这消除了为 a 的每个实例单独将它们作为变量传递的需要。EntityManagerTemplatesJPAQueriesJPAQuery
没有必要使用JPAQueryFactory,但它可以使您的代码更易于阅读。此外,QueryDSL 网站上的许多代码示例都使用查询工厂,因此可以更轻松地将这些示例用作您自己的代码中的片段。
| 归档时间: |
|
| 查看次数: |
2603 次 |
| 最近记录: |