2011-12-14 99 views
0

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

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

此外,为什么它甚至支持未修改字段的更新?有没有理由更新未经修改的字段?

+0

[Hibernate dynamic-update = false]的可能重复(http://stackoverflow.com/questions/4709293/hibernate-dynamic-update-false) – axtavt 2011-12-14 16:30:19

回答

3

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

由于只有更新修改字段是一个代价高昂的情况,如果有大量的属性被应用程序在其大部分业务逻辑中修改。因为它包含脏检查(这是另一个选择查询来识别修改的字段)。当有20个字段并且只有很少的字段被修改时,这种动态更新是很好的(因为可以在DML语句中添加少量列以获得性能)。如果超过50%的字段被修改,那么更新所有属性是很好的。因此,开发人员决定只更新修改后的字段。

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