Hibernate动态更新

时间:2011-12-14 16:27:58

标签: hibernate orm persistence ejb

我从here知道,hibernate可配置为只对已修改的实体的字段进行数据库更新,而不是实体的所有字段(即使它们未被更改)。这是默认行为。

我的问题是,为什么后者是默认行为,不应该只更新修改字段的默认行为吗?

而且,为什么它甚至支持未修改字段的更新?是否有理由更新未修改的字段?

1 个答案:

答案 0 :(得分:3)

  

我的问题是,为什么后者是默认行为,不应该   是仅更新修改字段的默认行为吗?

如果在大多数业务逻辑中应用程序修改了大量属性,则仅更新已修改的字段是非常昂贵的。因为它包括脏检查(这是另一个选择查询以识别修改的字段)。当有20个字段并且只修改了少数字段时,这种动态更新是很好的(因为可以在DML语句中添加很少的列来执行以获得性能)。如果修改了超过50%的字段,则最好更新所有属性。因此,开发人员可以选择仅更新已修改的字段。

希望我的意见能帮助您理解这一点。如果我错了,请专家纠正我。