使用 spring-data-jpa 获取这些数据如何更正确?

Posted

技术标签:

【中文标题】使用 spring-data-jpa 获取这些数据如何更正确?【英文标题】:How is more correct to get this data with spring-data-jpa? 【发布时间】:2019-05-07 02:07:25 【问题描述】:

例如,我需要在网页上显示统计表。此表由 5 行组成:

AVG-rating | 5
TotalSum   | 12.1
SumToday   | 2.1
SummMonth  | 8.6
SomeElse   | 666 

此表中的每个值 - 使用数据库中的聚合函数计算得出。

问题:使用spring-data-jpa 获取此数据如何更正确?

现在我有一项服务 - StatisticService 和公共方法 getStatistic(user);

在这个方法中,我从repository 调用5 methods 来获取每个统计值和表单响应。每个存储库方法 - native query

我不喜欢这种方法。我认为最好的方法是在database 中创建View 并选择所有统计信息在一个查询中查看

但我也不喜欢这种方法。因为我被绑在了基地上。基础包含逻辑。虽然在第一种情况下我使用原生查询,但我可以将它们重写为JPQL(但可能不是全部)。

如何使用spring-data-jpa 更正确地从数据库中提取聚合信息?

【问题讨论】:

我会创建一个视图并使用@SecondaryTable 将其映射到实体,然后它们就成为实体的正常属性。这种方法的最大优点是您可以使用标准存储库方法在数据库级别进行排序和过滤。 ***.com/questions/33778895/… 【参考方案1】:

由于您在 DB 中计算了所有值,因此我看不到任何机会,而不是您每 5 次查询调用一次。否则你需要在你的代码中实现这个计算逻辑

【讨论】:

以上是关于使用 spring-data-jpa 获取这些数据如何更正确?的主要内容,如果未能解决你的问题,请参考以下文章

SpringBoot:3.SpringBoot使用Spring-data-jpa实现数据库访问

Spring Boot 自动配置无法与 spring-data-jpa 一起正常工作

Spring-data-jpa 投影生成查询不正确

为什么Spring-Data-JPA Async无法正常工作?

使用 spring-data-jpa 和 spring-mvc 过滤数据库行

spring-data-jpa 如何使用多个数据源? [复制]