A APP @Column
anotação
O nullable
atributo da @Column
anotação tem dois propósitos:
- é usado pela ferramenta de geração de esquema
- é usado pelo Hibernate durante a descarga do contexto de persistência
Ferramenta de geração de esquema
A ferramenta de geração de esquema HBM2DDL converte o @Column(nullable = false)
atributo de entidade em uma NOT NULL
restrição para a coluna da tabela associada ao gerar a CREATE TABLE
instrução.
Como expliquei no Guia do Usuário do Hibernate , é melhor usar uma ferramenta como Flyway em vez de confiar no mecanismo HBM2DDL para gerar o esquema do banco de dados.
Liberação de contexto de persistência
Ao liberar o contexto de persistência, o Hibernate ORM também usa o @Column(nullable = false)
atributo de entidade:
new Nullability( session ).checkNullability( values, persister, true );
Se a validação falhar, o Hibernate lançará PropertyValueException
ae impedirá que a instrução INSERT ou UPDATE seja executada desnecessariamente:
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 mais detalhes sobre como o mecanismo de liberação do Hibernate funciona, consulte este artigo .
A @NotNull
anotação de validação de bean
A @NotNull
anotação é definida pelo Bean Validation e, assim como o Hibernate ORM é a implementação JPA mais popular, a implementação mais popular do Bean Validation é o Hibernate Validator estrutura .
Ao usar o Hibernate Validator junto com o Hibernate ORM, o Hibernate Validator emitirá um ConstraintViolation
ao validar a entidade.