Между чем различие @Basic(optional = false)
и @Column(nullable = false)
в персистентности JPA?
Gordon Yorke (член архитектурного комитета EclipseLink, технический руководитель TopLink Core, член экспертной группы JPA 2. 0 Expert Group Member) написал хороший ответ на эту тему, поэтому вместо того, чтобы перефразировать его, я процитирую его ответ:
Разница между
optional
иnullable
заключается в области видимости, в которой они оцениваются. Определение 'optional
' говорит о свойствах и значениях полей и предполагает, что эта функция должна оцениваться в пределах времени выполнения. 'nullable
' относится только к относится только к столбцам базы данных.Если реализация решит реализовать
optional
, то эти свойства должны быть оценены в памяти провайдером персистентности и исключение должно быть вызвано до того, как SQL будет отправлен в базу данных, иначе при использовании 'updatable=false
' 'optional
' о нарушениях никогда бы не сообщалось.