簡體   English   中英

僅更改已更改字段的表

[英]Update table for only changed fields

我有一個人員表和Person.java映射到表。 我有一個編輯ui來更改Person記錄的詳細信息。 在編輯頁面上,用戶通常一次更改1或2個字段。 我正在使用AJAX發送更新調用,並且只想發送更改的字段。 目前正在發回整個對象。

問題出在后端,關於如何僅更改已更改字段的數據庫。

UI層創建一個僅包含已更改字段的Person對象,其余字段將未初始化。 然后將該對象傳遞給DAO以進行持久化。 DAO如何知道哪些字段被更改? 哪些字段未初始化或故意設置為null以進行更新。 目前整個對象來了,所以我更新了所有列。

我通常做的是先從數據庫中獲取所有字段的對象。 然后我更新我想要的字段,然后將其發送回DAO。 無論如何,DAO都會更新整個對象。 以這種方式這樣做DAO並不關心哪一個被改變了。 雖然您可能希望添加另一個DAO方法,但有一些特殊情況。

如果您使用ORM(Hibernate)進行持久化,那么您可以使用hibernate.merge進行選擇性更新。

JDBC方法:將對象保留在會話中,該會話用於使用用戶可以編輯的初始值填充UI。 當用戶提交更改時,將提交的值與會話中的對象進行比較,並添加到包含字段名稱和新值的地圖中。 使用此映射動態創建更新查詢。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM