Training, Workshops, Softwareentwicklung

Hibernate Tutorial

Dynamic Update

Ein Punkt, der manchmal zu Kritik an Hibernate führt, ist die Tatsache, dass bei einem Update jeder Datensatz komplett mit allen Feldern neu geschrieben wird, auch wenn sich nur ein einzelner Wert geändert hat.

Das hat im Grund nur dann Vorteile, wenn man sehr sehr viele Datensätze in Folge ändert, und Hibernate die Datenbankoperationen als Batches zur Datenbank schicken kann.

Ändert man nur einzelne Datensätze, kann das eher ein Nachteil sein, wenn zum Beispiel Postgres Indizes aktualisiert, obwohl sich eigentlich an der gefragten Stelle gar nichts geändert hat.

Hier kann man Abhilfe schaffen, in dem man an der Entity-Klasse die Annotation '@DynamicUpdate' anbringt.

DynamicUpdate
@Entity
@DynamicUpdate
//@DynamicInsert
public class Customer {
    @Id
    private Long id;
    private String firstname;
    private String lastname;

Nun aktualisiert Hibernate wirklich nur die Felder, die sich verändert haben. Analog dazu gibt es auch noch @DynamicInsert für die persist Vorgänge.