繁体   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