查询、本地查询、命名查询和类型化查询有什么区别?'独立'查询是否存在,还是只是一个缩写?在我看来,本地查询是指简单 SQL 编写的查询,而命名查询涉及实体(Hibernate 映射)。有人能简要解释一下吗?
查询、本地查询、命名查询和类型化查询有什么区别?'独立'查询是否存在,还是只是一个缩写?在我看来,本地查询是指简单 SQL 编写的查询,而命名查询涉及实体(Hibernate 映射)。有人能简要解释一下吗?
查询
查询是指使用类似于SQL的语法,通常用于执行DML语句(CRUD操作)的JPQL/HQL 查询。
在JPA中,您可以使用 entityManager.createQuery()
创建查询。您可以查看API了解更多详情。
在Hibernate中,您使用 session.createQuery()
。
本地查询
本地查询是指实际的SQL查询(引用实际数据库对象)。这些查询是可直接在数据库中使用数据库客户端执行的SQL语句。
JPA: entityManager.createNativeQuery()
Hibernate(非JPA实现):session.createSQLQuery()
命名查询
类似于常量如何定义。命名查询是通过给查询赋予一个名称来定义查询的方式。您可以在Hibernate映射文件中定义此查询,也可以在实体级别使用注释定义。
类型化查询
类型化查询为您提供了一种在创建查询时指定实体类型的选项,因此在此之后的任何操作都不需要对预期类型进行显式转换。而普通的Query
API不返回您期望的精确对象类型,您需要进行强制类型转换。