Die JPA @Column Anmerkung
Das nullableAttribut 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 NULLbeim Generieren der CREATE TABLEAnweisung 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, PropertyValueExceptionlö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 @NotNullAnnotation
Die @NotNullAnnotation 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 ConstraintViolationbei der Validierung der Entität ein aus.