| I use maven plugin to enhance bytecode of my entity
<configuration>
<enableDirtyTracking>true</enableDirtyTracking>
</configuration>
it produces correctly enhanced class:
@Entity
public class EntityWithManyStringFields implements ManagedEntity, SelfDirtinessTracker {
@Column
private String field1;
@Transient
private transient DirtyTracker $$_hibernate_tracker;
public void setField1(String field1) {
this.$$_hibernate_write_field1(field1);
}
public void $$_hibernate_write_field1(String var1) {
if (!EqualsHelper.areEqual(this.field1, var1)) {
this.$$_hibernate_trackChange("field1");
}
this.field1 = var1;
}
public void $$_hibernate_trackChange(String var1) {
if (this.$$_hibernate_tracker == null) {
this.$$_hibernate_tracker = new SimpleFieldTracker();
}
this.$$_hibernate_tracker.add(var1);
}
At debug time everything is OK, modified entity is not compared with snapshot. But then I run the benchmark measuring modifying and saving of already persisted entity it gives worse average time comparing to conventional dirty checking. The same happens for the list of entities. |