Warum macht Hibernate-set dynamic-insert= " false standardmäßig
Könnte jemand mir erklären, warum Hibernate setzt die Dynamic-insert= " false standardmäßig, und was ist der Grund?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnte jemand mir erklären, warum Hibernate setzt die Dynamic-insert= " false standardmäßig, und was ist der Grund?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Was @jb-nizet sagte.
Auch
dynamic-insert="true"
ist eine schlechte Idee, in meinem Buch.Überspringen von null-Felder aus der generierten SQL, bald finden Sie sich in einer situation, wo Sie deklariert werden Spalten
not null default
die in der Tat bewirkt, dass das persistente Daten, anders zu sein als die Entität Daten, hibernate kennt. Dies verursacht frustration und wahrscheinlich machen Sie resort zu teuersession.refresh()
Anrufe.Beispielsweise angenommen, Spalte
und sparen Sie eine Entität mit dem Wert null für die Eigenschaft zugeordnet ist, um diese Spalte.
Dynamische einfügen, werden Sie am Ende mit einer Person, die hat null Wert für die Eigenschaft message im Speicher, während gleichzeitig die entsprechenden Datenbank-Zeile ".
Ich hoffe, dass ich Sinn gemacht. Vor allem, wenn Sie erwägen, dynamic-insert für solch ein Szenario (Weg von zu müssen, legen Sie alle Eigenschaften für nicht-null-Spalten und verlassen Sie sich auf eine default-Einschränkung), denken Sie noch einmal.
Den dynamischen Einfügungen und Aktualisierungen sind sehr nützlich, aus zwei Gründen:
Jedoch, das dynamische einfügen/aktualisieren haben Nachteile:
So, es ist kein guter Weg oder schlechter Weg. Es kommt nur auf Ihre Daten zugreifen Muster, um herauszufinden, welche der beiden Sinn macht, für eine bestimmte Entität.
Weil es doesn ' T fügen Sie keine deutliche Leistungssteigerung zu überspringen null-Felder beim einfügen einer Entität.
Im Gegenteil, es kann die Leistung verringern, weil, anstatt in der Lage, verwenden Sie immer die gleiche vorbereitete Anweisung zum einfügen einer Zeile in einer Tabelle, und in der Lage sein, auszuführen, mehrere Einsätze in einem einzelnen batch, Hibernate, müssen erstellen Sie eine vorbereitete Anweisung für jede Person einfügen, die abhängig von den Feldern, die null sind und die Felder, die nicht sind.
So, mehr Komplexität, für eine reduzierte Leistung.