@Column
Chú thích JPA
Các nullable
thuộc tính của @Column
chú thích có hai mục đích:
- nó được sử dụng bởi công cụ tạo lược đồ
- nó được Hibernate sử dụng trong quá trình xóa Bối cảnh dai dẳng
Công cụ tạo lược đồ
Công cụ tạo lược đồ HBM2DDL chuyển @Column(nullable = false)
thuộc tính thực thể thành một NOT NULL
ràng buộc cho cột bảng được liên kết khi tạo CREATE TABLE
câu lệnh.
Như tôi đã giải thích trong Hướng dẫn sử dụng Hibernate , tốt hơn là sử dụng một công cụ như Flyway thay vì dựa vào cơ chế HBM2DDL để tạo lược đồ cơ sở dữ liệu.
Bối cảnh dai dẳng
Khi xóa Bối cảnh liên tục, Hibernate ORM cũng sử dụng @Column(nullable = false)
thuộc tính thực thể:
new Nullability( session ).checkNullability( values, persister, true );
Nếu xác thực thất bại, Hibernate sẽ ném một PropertyValueException
và ngăn chặn câu lệnh INSERT hoặc UPDATE được thực thi một cách cần thiết:
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]
);
}
Để biết thêm chi tiết về cách cơ chế xả Hibernate hoạt động, hãy xem bài viết này .
@NotNull
Chú thích xác thực Bean
Các @NotNull
chú thích được xác định bởi Bean Validation và, giống như Hibernate ORM là phổ biến thực hiện JPA nhất, Bean Validation thực hiện phổ biến nhất là Hibernate Validator khuôn khổ.
Khi sử dụng Trình xác thực Hibernate cùng với ORM Hibernate, Trình ConstraintViolation
xác thực Hibernate sẽ ném một khi xác thực thực thể.