L'APP @Column
Annotation
El nullable
de l'attribut @Column
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émas
L'outil de génération de schémas HBM2DDL traduit les données de la base de données de l'UE. @Column(nullable = false)
à un attribut d'entité NOT NULL
pour la colonne de la table associée lors de la génération du fichier CREATE TABLE
déclaration.
Comme je l'ai expliqué dans le Guide de l'utilisateur d'Hibernate il est préférable d'utiliser un outil tel que Voie de migration au lieu de s'appuyer sur le mécanisme HBM2DDL pour générer le schéma de la base de données.
Vidage du contexte de persistance
Lors du vidage du contexte de persistance, Hibernate ORM utilise également la fonction @Column(nullable = false)
attribut de l'entité :
new Nullability( session ).checkNullability( values, persister, true );
Si la validation échoue, Hibernate envoie un message d'erreur PropertyValueException
et empêche l'exécution nécessaire 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]
);
}
La validation du haricot @NotNull
Annotation
El @NotNull
est définie par Bean Validation et, tout comme l'ORM Hibernate est l'implémentation JPA la plus populaire, l'implémentation Bean Validation la plus populaire est l'annotation Validateur Hibernate cadre.
Lorsque vous utilisez le validateur Hibernate avec l'ORM Hibernate, le validateur Hibernate lancera un message d'erreur ConstraintViolation
lors de la validation de l'entité.