@Column
Анотація JPA
nullable
Атрибут @Column
анотації має дві мети:
- він використовується інструментом генерації схеми
- він використовується Hibernate під час промивання контексту стійкості
Інструмент генерації схем
Інструмент генерації схеми HBM2DDL перетворює @Column(nullable = false)
атрибут сутності в NOT NULL
обмеження для пов'язаного стовпця таблиці під час генерації CREATE TABLE
оператора.
Як я пояснив у Посібнику зі сплячого режиму , краще використовувати такий інструмент, як Flyway, а не покладатися на механізм HBM2DDL для створення схеми бази даних.
Контекст витримки
Під час промивання контексту постійності Hibernate ORM також використовує @Column(nullable = false)
атрибут сутності:
new Nullability( session ).checkNullability( values, persister, true );
Якщо перевірка не вдасться, Hibernate викине a PropertyValueException
та запобігає виконанню оператора INSERT або 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]
);
}
Більш детально про те, як працює механізм промивання в режимі зимування, перегляньте цю статтю .
@NotNull
Анотація перевірки квасолі
@NotNull
Анотацій визначається Bean Validation і, так само , як Hibernate ORM є найбільш популярною реалізацією JPA, найбільш популярною реалізація Bean Validation є Hibernate Validator рамки.
Якщо ви використовуєте Hibernate Validator разом із Hibernate ORM, Hibernate Validator викидає а, ConstraintViolation
коли перевіряє сутність.