[英]What is a proper way to modify a list of DB Objects using Spring MVC?
使用spring MVC模型并且没有任何ORM解决方案,我应该如何在不增加数据库查询的情况下处理大量的数据库对象?
SELECT
对象,然后使用RowMapper
将它们放入(大) List
。 List
上循环以在数据库中执行n个简单的UPDATE
对n个对象的查询: 1 + n
在DAO中编写一个SQL查询,该查询直接更新所有相应的对象而无需提取它们。
对n个对象的查询: 1
由于第2轨的效率似乎更高,它也似乎与Spring MVC模型完全相反,因为我的服务将趋于空白,而DAO则会趋于扩展。
也许有一种通用的方法可以在不增加查询的情况下对数据库中的Java对象List
执行UPDATE
?
给定此表:
+----+---------+------+
| MY_OBJECT |
+----+---------+------+
| ID | BOOLEAN | DATE |
+----+---------+------+
| 0 | 0 | NULL |
| 1 | 1 | NULL |
| 2 | 0 | NULL |
| 3 | 1 | NULL |
| 4 | 1 | NULL |
+----+---------+------+
我有一个MyObjectDao
和MyObjectService
。
对于所有将boolean设置为true
对象,我想将DATE
设置为SYSDATE()
。
应该是带有查询的完整DAO,还是DAO检索对象,服务应对其进行编辑,然后DAO更新它们?
这通常由ORM层处理。
如果您使用的是Hibernate(其他ORM可用),那么我将委托给它。
如果您有自己的家庭旋转ORM层,则可以执行任何您想做的事情,但是作为对您的论据的重视,我会说:
我做了一些研究,并对这个问题进行了很多思考。 从我的工作中得出的结论是,在大多数情况下,该过程应为:
我缺少的关键元素是batchUpdate 。 没有它,更新大的元素List
将花费几分钟,这是不可接受的。 最大的区别不是执行的查询数量,而是查询如何传输到数据库,从而避免了在批量更新情况下多次使用网络层。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.