一尘不染

查询,本机查询,命名查询和类型查询之间的区别

hibernate

查询,本机查询,命名查询和类型查询之间有什么区别?“独立”查询是否存在,还是只是缩写?在我看来,本机查询是用简单sql编写的查询,而命名查询与实体(hibernate映射)有关。有人可以简要解释一下吗?


阅读 237

收藏
2020-06-20

共1个答案

一尘不染

询问

查询是指JPQL / HQL查询,其语法类似于通常用于执行DML语句(CRUD操作)的SQL。

在JPA中,您可以使用创建查询entityManager.createQuery()。您可以查看API以获得更多详细信息。

在Hibernate中,您可以使用session.createQuery()

本机查询

本机查询是指实际的SQL查询(指的是实际的数据库对象)。这些查询是sql语句,可以使用数据库客户端直接在数据库中执行。

JPA:entityManager.createNativeQuery()
Hibernate(非JPA实施):session.createSQLQuery()

命名查询

类似于常量的定义方式。NamedQuery是通过给查询命名来定义查询的方式。您可以在hibernate的映射文件中定义此名称,也可以在实体级别使用注释。

类型查询

在创建查询时,TypedQuery提供了一个选项来提及实体的类型,因此此后的任何操作都无需显式转换为预期的类型。普通QueryAPI不会返回您期望的确切类型的对象,而您需要进行转换。

2020-06-20