gpt4 book ai didi

java - 我应该总是从数据库中检索完整的对象吗?

转载 作者:行者123 更新时间:2023-11-29 06:41:47 26 4
gpt4 key购买 nike

这是一个非常简单的问题,适用于使用 java 编写 Web 界面。比如说,我没有使用 ORM(即使我正在使用一个),假设我的应用程序中有这个 Car (id,name, color, type, blah, blah) 实体并且我有一个 CAR 表在数据库中代表这个实体。所以,假设我只需要更新一堆汽车上的一部分字段,我知道典型的流程是:

  1. DAO 类 (CarDAO) - getCarsForUpdate()
  2. 遍历所有 Car 对象,仅更新颜色为绿色或其他颜色。
  3. 另一个 DAO 调用 updateCars(Cars cars)。

现在,对于什么是简单的选择和更新查询,这不是拐弯抹角吗?在上面的第一步中,我将从数据库中检索整个对象数据:“select id,name,color,type,blah,blah.. where ..from CAR”而不是“< strong>从 CAR 中选择 id、颜色...”。那么为什么我应该在发布 DAO 调用时检索那些额外的字段我永远不会使用“颜色”以外的任何东西?这同样适用于最后一步 3。或者,假设我只查询 id 和颜色(选择 id、颜色)并创建一个只填充 id 和颜色的汽车对象——这完全没问题,不是吗?无论如何,Car 对象是贫血的?

这一切(面向对象)看起来是不是有点假?

最佳答案

首先,如果 RDBMS 可以处理您的查询,我更愿意接受它。原因是您不希望 JVM 完成所有工作,尤其是在运行企业应用程序时(并且您有许多并发连接需要相同的资源)。

如果你特别想更新数据库中的对象(例如,将汽车颜色设置为绿色),我建议使用类似的 SQL

UPDATE CAR SET COLOR = 'GREEN';

(注意我没有使用 WHERE 子句)。这更新了 ALL CAR 表,我不需要拉出所有 Car 对象,调用 setColor("Green") 并进行更新。

事后看来,我想说的是应用工程知识。您的 DAO 应该简单地进行快速选择、更新等,并让 RDBMS 处理所有 SQL“工作”。

关于java - 我应该总是从数据库中检索完整的对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10878994/

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