在“良好的旧JDBC时代”中,我写了很多SQL代码,它们仅对实际更改的“属性/成员”进行了非常有针对性的更新:休眠:脏检查和只更新脏属性?
例如,考虑具有以下成员的对象:
public String name;
public String address;
public Date date;
如果只有date
在一些商业方法的改变,我只会发出的date
成员的SQL UPDATE
。然而
看来(这是我的Hibernate的“印象”),与标准的Hibernate映射工作时(映射满级),甚至只有一个成员牵头的更新对象的完全更新的SQL语句由Hibernate生成。
我的问题是:
这是观察是正确的,即休眠不智能检查(在完全映射类),有什么地方改变了,然后只发出更新成员(们)但是总是会更新(在生成的SQL更新语句中)所有映射成员(类的成员),即使它们没有被更改(如果对象由于一个成员很脏而变脏)...
我该怎么做才能让Hibernate只更新这些成员,th已经改变了?我正在寻找一种解决方案,让Hibernate只更新实际更改的成员。
(我知道Hibernate并不脏检查相当一些工作,但据我所知,这个肮脏的检查是唯一相关,以确定如果对象作为一个整体是脏的,而不是单一的部件脏了。)
你好Maurice,非常感谢你!你的帮助是绝对有用的。我没有意识到“动态更新”功能,在您的帮助下我可以谷歌,现在我完全知道如何解决我的问题。非常感谢! – jens 2010-04-21 07:15:52
现在动态更新/动态插入已弃用,因此您可以使用@ DynamicUpdate/@ DynamicInsert代替 – 2015-08-13 20:30:38