在“好老的JDBC时代”,我写了很多SQL代码,只更新实际更改的“属性/成员”:
例如,考虑一个具有以下成员的对象:
我的问题是:
1.这种观察是否正确,即Hibernate在完全映射的类中没有智能检查哪些成员已更改并仅为特定更改的成员发出更新,而总是将所有映射的成员(类)更新(如果对象由于一个成员脏而变脏...)
2.我该怎么做才能让Hibernate仅更新已更改的成员? 我正在寻找一种解决方案,使Hibernate仅更新实际更改的成员。(我知道Hibernate会对脏检查进行相当多的工作,但就我所知,这种脏检查只与识别整个对象是否脏有关,而不是哪个单独成员是脏的。)
例如,考虑一个具有以下成员的对象:
public String name;
public String address;
public Date date;
如果一个业务方法只更改了date
,那么我只会针对date
成员发出SQL UPDATE
。然而,似乎(这是我的对Hibernate的“印象”),即使只更新单个成员,使用标准Hibernate映射(映射整个类)也会导致Hibernate在生成的SQL语句中完全更新该对象。我的问题是:
1.这种观察是否正确,即Hibernate在完全映射的类中没有智能检查哪些成员已更改并仅为特定更改的成员发出更新,而总是将所有映射的成员(类)更新(如果对象由于一个成员脏而变脏...)
2.我该怎么做才能让Hibernate仅更新已更改的成员? 我正在寻找一种解决方案,使Hibernate仅更新实际更改的成员。(我知道Hibernate会对脏检查进行相当多的工作,但就我所知,这种脏检查只与识别整个对象是否脏有关,而不是哪个单独成员是脏的。)