Warum sollte ich angeben @Column( nullable = false )?
Ich habe eine Entität annotiert mit @Entity
.
Wenn ich bin verantwortlich für die Erstellung der CREATE TABLE
Skripte warum sollte ich angeben @Column( nullable = false )
wenn ich eine Spalte in der Datenbank mit der NOT NULL
keywords? Gibt es irgendein Beispiel, dass zeigt die Vorteile der Verwendung dieser Eigenschaft in einem Feld?
InformationsquelleAutor der Frage Fagner Brack | 2013-03-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bessere Fehlermeldungen und Fehler-handling, vor allem, wenn Sie auch hinzufügen, die JSR303 @NotNull annotation.
Wenn du die Spalte als
NOT NULL
aber nicht sagen, JPA, es ist nicht null, JPA davon aus, dass null-Werte sind OK. Wenn Sie versuchen, speichern Sie ein Objekt mit null, es wird gehen Sie zu senden, um die DB und erhalten Sie einen DB-Fehler. Dies erhöht die log-spam in der Datenbank und es ist viel schwieriger zu bestimmen, von dem Fehler, die Spalte(N) die Tabelle(N) waren das problem, geschweige denn, die Karte und Sie zurück zu Ihrem PPV-Namen.Wenn Sie kommentieren, die Sie als nicht null, JPA, wird eine Ausnahme ausgelöst, bevor Sie Sie speichern, Vermeidung von DB-log-spam und in der Regel geben Sie eine bessere Fehler. Insbesondere, wenn Sie Ihre JPA-provider unterstützt JSR303 und entweder übersetzt
nullable=false
in@NotNull
intern oder die Sie Hinzugefügt haben@NotNull
zu, es werde Ihnen eine Daten-Struktur, die Sie untersuchen können, um genau zu sehen, welche Felder der Objekte, die abgelehnt wurden, aus welchen Gründen, zusammen mit anpassbaren Vorlagen Fehlermeldungen.Deshalb sollte man sagen, JPA über
NOT NULL
Felder. Und es ist einfacher für andere zu arbeiten auf Ihrem code zu verstehen, ohne zu Lesen das DB-schema.InformationsquelleAutor der Antwort Craig Ringer
Zusätzlich, wenn die Spalte hat
nullable = false
im@ManyToOne
annotation, Hibernate hat INNER JOIN Abfrage auf die verknüpfte Tabelle.nullable = true
gibt im Ergebnis LEFT JOIN.Dass ist der andere Unterschied.
InformationsquelleAutor der Antwort Adam Tychoniewicz
In deinem Fall könnte es nicht sein, den tatsächlichen nutzen, aber:
InformationsquelleAutor der Antwort Bozho