使用spring MVC模型并且没有任何ORM解决方案,如何在不增加数据库查询的情况下处理大量数据库对象?
SELECT
使用DAO的对象,并将它们放入带有List
的(大)RowMapper
。List
在数据库中执行简单UPDATE
查询n个对象: 1 + n
在DAO中编写一个SQL查询,直接更新所有相应的对象而不提取它们。
查询n个对象: 1
由于第2轨似乎效率更高,它似乎也直接违反了Spring MVC模型,因为我的服务往往会变空,而我的DAO将会扩展。
也许有一种通用的方法在数据库的Java UPDATE
对象上执行List
而不会增加查询?
鉴于此表:
+----+---------+------+
| MY_OBJECT |
+----+---------+------+
| ID | BOOLEAN | DATE |
+----+---------+------+
| 0 | 0 | NULL |
| 1 | 1 | NULL |
| 2 | 0 | NULL |
| 3 | 1 | NULL |
| 4 | 1 | NULL |
+----+---------+------+
我有一个MyObjectDao
和一个MyObjectService
。
对于布尔值为DATE
的所有对象,我想将SYSDATE()
设置为true
。
如果它是带有查询的完整DAO,或者DAO应该检索对象,服务是否编辑它们然后DAO会更新它们?
答案 0 :(得分:1)
这通常由ORM层处理。
如果您正在使用Hibernate(其他ORM可用),那么我会委托给它。
如果你有自己的家庭旋转ORM层,你可以做任何你想做的事,但作为你的论点的重点,我会说:
答案 1 :(得分:0)
我做了一些研究,并对这个问题提出了很多想法。我从我的工作中推断出,在大多数情况下,过程应该是:
我缺少的关键元素是 batchUpdate 。没有它,更新一个大的List
元素将需要几分钟,这是不可接受的。最大的区别不在于执行的查询量以及它们如何传输到数据库,从而避免了批量更新情况下网络层的多次使用。