L' @Column
annotation JPA
L' nullable
attribut de l' @Column
annotation a deux objectifs:
- il est utilisé par l'outil de génération de schéma
- il est utilisé par Hibernate lors du vidage du contexte de persistance
Outil de génération de schéma
L'outil de génération de schéma HBM2DDL traduit l' @Column(nullable = false)
attribut d'entité en une NOT NULL
contrainte pour la colonne de table associée lors de la génération de l' CREATE TABLE
instruction.
Comme je l'ai expliqué dans le Guide de l'utilisateur d'Hibernate , il est préférable d'utiliser un outil comme Flyway au lieu de s'appuyer sur le mécanisme HBM2DDL pour générer le schéma de base de données.
Rinçage du contexte de persistance
Lors du vidage du contexte de persistance, Hibernate ORM utilise également l' @Column(nullable = false)
attribut d'entité:
new Nullability( session ).checkNullability( values, persister, true );
Si la validation échoue, Hibernate lance un PropertyValueException
et empêche l'exécution forcée de l'instruction INSERT ou UPDATE:
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]
);
}
Pour plus de détails sur le fonctionnement du mécanisme de vidage Hibernate, consultez cet article .
L' @NotNull
annotation de validation du bean
L' @NotNull
annotation est définie par Bean Validation et, tout comme Hibernate ORM est l'implémentation JPA la plus populaire, l'implémentation Bean Validation la plus populaire est le framework Hibernate Validator .
Lorsque vous utilisez Hibernate Validator avec Hibernate ORM, Hibernate Validator lance un ConstraintViolation
lors de la validation de l'entité.