Die JPA @Column
Anmerkung
Das nullable
Attribut der@Column
Anmerkung hat zwei Zwecke:
- Es wird vom Schemaerstellungstool verwendet
- Es wird vom Ruhezustand beim Löschen des Persistenzkontexts verwendet
Schema-Generierungs-Tool
Das HBM2DDL-Schemagenerierungstool übersetzt das @Column(nullable = false)
Entitätsattribut NOT NULL
beim Generieren der CREATE TABLE
Anweisung in eine Einschränkung für die zugehörige Tabellenspalte .
Wie ich im Hibernate-Benutzerhandbuch erklärt habe , ist es besser, ein Tool wie Flyway zu verwenden, als sich beim Generieren des Datenbankschemas auf den HBM2DDL-Mechanismus zu verlassen.
Persistenz-Kontext-Flush
Beim Löschen des Persistenzkontexts verwendet Hibernate ORM auch das @Column(nullable = false)
Entitätsattribut:
new Nullability( session ).checkNullability( values, persister, true );
Wenn die Validierung fehlschlägt, PropertyValueException
löst Hibernate ein aus und verhindert, dass die INSERT- oder UPDATE-Anweisung erforderlich ausgeführt wird:
if ( !nullability[i] && value == null ) {
//check basic level one nullablilty
throw new PropertyValueException(
"not-null property references a null or transient value",
persister.getEntityName(),
persister.getPropertyNames()[i]
);
}
Weitere Informationen zur Funktionsweise des Hibernate-Spülmechanismus finden Sie in diesem Artikel .
Die Bean Validation @NotNull
Annotation
Die @NotNull
Annotation wird durch Bean Validation definiert. Genau wie Hibernate ORM die beliebteste JPA-Implementierung ist, ist der Hibernate Validator die beliebteste Bean Validation-Implementierung Framework .
Wenn Sie Hibernate Validator zusammen mit Hibernate ORM verwenden, löst Hibernate Validator ConstraintViolation
bei der Validierung der Entität ein aus.