[英]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.