gpt4 book ai didi

java - 查询计算与编程计算

转载 作者:搜寻专家 更新时间:2023-10-30 23:07:34 25 4
gpt4 key购买 nike

我正在使用 Hibernate 作为 ORM 从事 Java EE 项目,我已经到了必须对我的类执行一些数学计算的阶段,例如 SUM、COUNT、加法和除法。

我有两个解决方案:

  1. 选择我的类并在我的代码中以编程方式应用这些操作
  2. 对我的命名查询进行计算

我想请问性能和速度哪个更好?

谢谢

最佳答案

如果您要在同一个事务中从数据库加载要对其进行聚合的相同实体,那么如果您使用 Java 进行计算,性能会更好。它为您节省了一次往返数据库的时间,因为在那种情况下您已经在内存中拥有了实体。其他好处是:

  • 更容易对计算进行单元测试,因为您可以坚持使用基于 Java 的单元测试框架
  • 用一种语言保持逻辑
  • 也适用于尚未持久化的实体集合

但是,如果您不打算加载要对其进行计算的同一组实体,那么如果让数据库进行计算,几乎在任何情况下都会提高性能。涉及的实体越多,性能优势就越大。

想象一下,对今年订单中的所有订单项进行汇总,可能有几百万个。

应该清楚的是,必须首先通过 TCP 连接将所有这些实体加载到 Java 进程的内存中(即使它在同一台机器中)将花费更多的时间和更多的内存,而不是让数据库执行计算。

如果您的映射需要每个实体进行额外的查询,那么 Hibernate 将至少为每个实体进行一次额外的数据库往返,在这种情况下,在数据库中使用 SQL 计算事物的性能优势会更大。

关于java - 查询计算与编程计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24719011/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com