【发布时间】:2012-01-20 10:26:48
【问题描述】:
我从here 知道,hibernate 可配置为仅更新已修改实体的字段,而不是实体的所有字段(即使它们未更改)。这是默认行为。
我的问题是,为什么后者是默认行为,不应该是仅更新修改后的字段的默认行为吗?
更进一步,为什么它甚至支持未修改字段的更新?是否有理由更新未修改的字段?
【问题讨论】:
标签: hibernate orm persistence ejb
我从here 知道,hibernate 可配置为仅更新已修改实体的字段,而不是实体的所有字段(即使它们未更改)。这是默认行为。
我的问题是,为什么后者是默认行为,不应该是仅更新修改后的字段的默认行为吗?
更进一步,为什么它甚至支持未修改字段的更新?是否有理由更新未修改的字段?
【问题讨论】:
标签: hibernate orm persistence ejb
我的问题是,为什么后者是默认行为,不应该吗? 是只更新修改的字段的默认行为吗?
如果应用程序在其大部分业务逻辑中修改了大量属性,则仅更新已修改字段的成本很高。因为它包括脏检查(这是另一个用于识别修改字段的选择查询)。当有 20 个字段并且只有少数字段被修改时,这种动态更新是好的(因为可以在 DML 语句中添加少数列来执行以获得性能)。如果修改了超过 50% 的字段,那么最好更新所有属性。因此,开发人员可以选择仅更新已修改的字段。
希望我的意见能帮助您理解这一点。如有错误请高手指正。
【讨论】: