查询、本机查询、命名查询和类型化查询之间的区别
Difference between query, native query, named query and typed query
查询、本机查询、命名查询和类型化查询之间有什么区别? 'alone-standing' 查询是否存在,或者它只是一个缩写?在我看来,本机查询是用简单 sql 编写的查询,而命名查询与实体(hibernate-mapping)相关。有人可以简要解释一下吗?
查询
查询是指JPQL/HQL查询,其语法类似于SQL,通常用于执行DML语句(CRUD操作)。
在 JPA 中,您可以使用 entityManager.createQuery()
创建查询。您可以查看 API 了解更多详情。
在 Hibernate 中,您使用 session.createQuery()
"
NativeQuery
本机查询是指实际的 sql 查询(指实际的数据库对象)。这些查询是 sql 语句,可以使用数据库客户端直接在数据库中执行。
JPA:entityManager.createNativeQuery()
Hibernate(非 JPA 实现):session.createSQLQuery()
NamedQuery
类似于常量的定义方式。 NamedQuery 是您通过给查询命名来定义查询的方式。您可以在休眠的映射文件中定义它,也可以在实体级别使用注释。
TypedQuery
TypedQuery 使您可以在创建查询时提及实体类型,因此此后的任何操作都不需要显式转换为预期类型。而正常的 Query
API 不 return 您期望的对象的确切类型,您需要投射。
查询、本机查询、命名查询和类型化查询之间有什么区别? 'alone-standing' 查询是否存在,或者它只是一个缩写?在我看来,本机查询是用简单 sql 编写的查询,而命名查询与实体(hibernate-mapping)相关。有人可以简要解释一下吗?
查询
查询是指JPQL/HQL查询,其语法类似于SQL,通常用于执行DML语句(CRUD操作)。
在 JPA 中,您可以使用 entityManager.createQuery()
创建查询。您可以查看 API 了解更多详情。
在 Hibernate 中,您使用 session.createQuery()
"
NativeQuery
本机查询是指实际的 sql 查询(指实际的数据库对象)。这些查询是 sql 语句,可以使用数据库客户端直接在数据库中执行。
JPA:entityManager.createNativeQuery()
Hibernate(非 JPA 实现):session.createSQLQuery()
NamedQuery
类似于常量的定义方式。 NamedQuery 是您通过给查询命名来定义查询的方式。您可以在休眠的映射文件中定义它,也可以在实体级别使用注释。
TypedQuery
TypedQuery 使您可以在创建查询时提及实体类型,因此此后的任何操作都不需要显式转换为预期类型。而正常的 Query
API 不 return 您期望的对象的确切类型,您需要投射。