我有一个简单的用例,但它真的没有优化,我想知道它是否可以。
假设我有一个简单的实体,其中包含一个ID
和一个名为的变量price
(该实体称为Product
)。
我正在使用Hibernate
并且JPA
每小时我想更新我的产品价格,所以这里是伪代码:
List<Product> products = Product.retrieveAll();
for (Product p : products) {
p.price = makeSomeComplexComputationsToGetNextPrice();
p.save(); // Updates the entity in the DB
}
这段代码真的很简单。,makeSomeComplexComputationsToGetNextPrice();
使用 CPU 进行一些计算,而且速度很快。
当我有 100 个产品时,一切正常(代码发出 101 个 sql 请求),但假设我有 10 000 个产品,代码发出 10 001 个 sql 请求,这需要几秒钟。
这个用例是我真实用例的简化版本,但问题就在这里:当我有太多产品时,执行需要花费太多时间(因为查询数量巨大)。
使用hibernate
and JPA
,有没有办法优化这样的用例?(这段代码应该用不到一秒的时间来执行,而且由于所有的查询,它需要的时间远远超过 1 秒)
非常感谢你的帮助