JPA Hibernate 查询与本机查询

JPA Hibernate query vs Native query

我使用 Spring Data JPA (hibernate) 生成的查询从我的 Sqlserver 中获取数据。现在我的系统出现了与性能相关的问题。

Load findByLoadId(Integer loadId);

这是我用来获取数据的查询。此查询 returns 25 个单元格数据,但我只使用其中的 5 个数据。

我可以使用像

这样的直接本机查询吗

select id,date,createdBy,createdOn,loadName from Load where loadId=:loadId

但是如果本机查询是可建议的,那么我有这样的问题 ORM 框架是否通过从数据库中获取不需要的数据来降低性能

"data cell" 我假设您指的是数据库 table 列,而不是记录。您的问题的答案是,是的,ORM 框架可能倾向于在幕后执行 SELECT *,这可能导致不需要的信息通过网络发送到您的应用程序。如果 JPA 存储库接口以这种方式运行,您可以切换到显式 JPA 查询(例如使用 @Query 注释),甚至是本机查询。然后,只需 select 您想要的列。这里的问题是 ORM 框架将对象模板(例如 类)映射到整个数据库 table。因此,实体的概念隐含地包括每个数据库列。如果您选择 select 仅某些列,则可能需要在 Java 方面进行一些调整。请注意,如果使用 JPA 查询,理论上您的代码仍将独立于数据库。