La @Column
anotación JPA
El nullable
atributo de la @Column
anotación tiene dos propósitos:
- es usado por la herramienta de generación de esquemas
- Hibernate lo utiliza durante el vaciado del contexto de persistencia
Herramienta de generación de esquemas
La herramienta de generación de esquemas HBM2DDL traduce el @Column(nullable = false)
atributo de entidad a una NOT NULL
restricción para la columna de la tabla asociada al generar la CREATE TABLE
declaración.
Como expliqué en la Guía del usuario de Hibernate , es mejor usar una herramienta como Flyway en lugar de confiar en el mecanismo HBM2DDL para generar el esquema de la base de datos.
Persistencia de la descarga del contexto
Al vaciar el contexto de persistencia, Hibernate ORM también usa el @Column(nullable = false)
atributo de entidad:
new Nullability( session ).checkNullability( values, persister, true );
Si la validación falla, Hibernate arrojará un PropertyValueException
, e impide que la instrucción INSERT o UPDATE se ejecute de forma necesaria:
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]
);
}
Para obtener más detalles sobre cómo funciona el mecanismo de descarga Hibernate, consulte este artículo .
La @NotNull
anotación de validación de frijoles
La @NotNull
anotación está definida por Bean Validation y, al igual que Hibernate ORM es la implementación de JPA más popular, la implementación de Bean Validation más popular es el marco de Hibernate Validator .
Al usar Hibernate Validator junto con Hibernate ORM, Hibernate Validator arrojará un ConstraintViolation
mensaje al validar la entidad.