JPAQuery 和 JPAQueryFactory 之间的区别
Difference between JPAQuery and JPAQueryFactory
JPAQuery 和 JPAQueryFactory 有什么区别?
还有,什么时候使用哪个?
根据 querydsl 参考文档:
Both JPAQuery and HibernateQuery implement the JPQLQuery interface.
For the examples of this chapter the queries are created via a JPAQueryFactory instance. JPAQueryFactory should be the preferred
option to obtain JPAQuery instances.
但是,我没看清楚。
谁能简单解释一下?
重要的是 Hibernates 查询语言 (HQL) 是 JPA 查询语言 (JPQL) 的超集。 Hibernate 也有一个特殊的方法来转换结果集,并且能够迭代可滚动的结果集,而不需要在内存中保留对所有记录的引用。为了利用这个额外的功能,必须使用 HQLTemplates
和 HibernateHandler
。第一个负责序列化附加类型的表达式,第二个负责与 Hibernates 集成 Query
实现。 HibernateHandler
实际上也是从 HQLTemplates
获得的,所以剩下的就是指定 HQLTemplates
.
事实上:JPAQuery
为 Templates
变量用 HQLTemplates.INSTANCE
实例化,其行为与 HibernateQuery
相同。 FWIW,如果您提供 EntityManager
实例和 JPAQuery
的构造,那么会自动为您的 ORM 供应商推导出 Templates
的适当实现。
所有 JPAQueryFactory
实际上是一个工厂方法,它为新实例化的 JPAQueries
绑定 EntityManager
和 Templates
变量。这消除了将这些作为变量单独传递给 JPAQuery
.
的每个实例的需要
没有必要使用 JPAQueryFactory
,但它可以使您的代码更易于阅读。此外,QueryDSL 网站上的许多代码示例都使用了查询工厂,因此在您自己的代码中将这些示例用作片段可能会更容易。
JPAQuery 和 JPAQueryFactory 有什么区别? 还有,什么时候使用哪个?
根据 querydsl 参考文档:
Both JPAQuery and HibernateQuery implement the JPQLQuery interface.
For the examples of this chapter the queries are created via a JPAQueryFactory instance. JPAQueryFactory should be the preferred option to obtain JPAQuery instances.
但是,我没看清楚。 谁能简单解释一下?
重要的是 Hibernates 查询语言 (HQL) 是 JPA 查询语言 (JPQL) 的超集。 Hibernate 也有一个特殊的方法来转换结果集,并且能够迭代可滚动的结果集,而不需要在内存中保留对所有记录的引用。为了利用这个额外的功能,必须使用 HQLTemplates
和 HibernateHandler
。第一个负责序列化附加类型的表达式,第二个负责与 Hibernates 集成 Query
实现。 HibernateHandler
实际上也是从 HQLTemplates
获得的,所以剩下的就是指定 HQLTemplates
.
事实上:JPAQuery
为 Templates
变量用 HQLTemplates.INSTANCE
实例化,其行为与 HibernateQuery
相同。 FWIW,如果您提供 EntityManager
实例和 JPAQuery
的构造,那么会自动为您的 ORM 供应商推导出 Templates
的适当实现。
所有 JPAQueryFactory
实际上是一个工厂方法,它为新实例化的 JPAQueries
绑定 EntityManager
和 Templates
变量。这消除了将这些作为变量单独传递给 JPAQuery
.
没有必要使用 JPAQueryFactory
,但它可以使您的代码更易于阅读。此外,QueryDSL 网站上的许多代码示例都使用了查询工厂,因此在您自己的代码中将这些示例用作片段可能会更容易。