查询、本机查询、命名查询和类型查询之间有什么区别?“独立”查询是否存在,或者它只是一个缩写?在我看来,原生查询是用简单的 sql 编写的查询,而命名查询与实体相关(休眠映射)。有人可以简要解释一下吗?
问问题
94878 次
1 回答
84
询问
查询是指 JPQL/HQL 查询,其语法类似于通常用于执行 DML 语句(CRUD 操作)的 SQL。
在 JPA 中,您可以使用entityManager.createQuery()
. 您可以查看API以获取更多详细信息。
在 Hibernate 中,您使用session.createQuery()
"
本机查询
本机查询是指实际的 sql 查询(指实际的数据库对象)。这些查询是可以使用数据库客户端直接在数据库中执行的 sql 语句。
JPA:entityManager.createNativeQuery()
休眠(非 JPA 实现):session.createSQLQuery()
命名查询
类似于如何定义常量。NamedQuery 是您通过为查询命名来定义查询的方式。您可以在休眠的映射文件中定义它,也可以在实体级别使用注释。
类型化查询
TypedQuery 为您提供了在创建查询时提及实体类型的选项,因此此后的任何操作都不需要显式转换为预期类型。而普通Query
API 不会返回您期望的确切类型的 Object 并且您需要强制转换。
于 2015-10-20T13:03:47.367 回答