В JPA я смущен, когда использовать атрибут optional=false
и аннотация @Column(nullable=false)
. Каково различие?
@Column (nullable = false)
- инструкция для создания схемы. Столбец базы данных, созданный вне класса, будет помечен как не допускающий значения NULL в фактической базе данных.
optional = false
- инструкция времени выполнения. Основная функциональная вещь, которую он выполняет, связана с отложенной загрузкой. Вы не можете лениво загружать сопоставленный объект, не являющийся коллекцией, если не забыли установить optional = false (потому что Hibernate не знает, должен ли там быть прокси-сервер или ноль, если вы не укажете, что нули невозможны, поэтому он может генерировать прокси.)