@ColumnChú thích JPA
Các nullablethuộc tính của @Columnchú 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 NULLràng buộc cho cột bảng được liên kết khi tạo CREATE TABLEcâ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 PropertyValueExceptionvà 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 .
@NotNullChú thích xác thực Bean
Các @NotNullchú 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 ConstraintViolationxác thực Hibernate sẽ ném một khi xác thực thực thể.