Поскольку Hibernate также имеет свои собственные аннотации проверки, например, @ NotBlank , я не думаю, что использовать javax.validation.constraint
здесь будет плохой практикой.Насколько я знаю, Hibernate даже пытается рассмотреть все эти аннотации.
Так, например, поле, помеченное @NotNull
, не будет обнуляться в сгенерированной таблице (поэтому добавление nullable = false
является избыточным), поле String
, помеченное @Size(max=2047)
, будет varchar(2047)
в MySQL вместо значения по умолчанию varchar(255)
.
Это может быть полезно прочитать: http://hibernate.org/validator/
Полный справочный документ по проекту: https://docs.jboss.org/hibernate/stable/validator/reference/en-US/html_single/#preface
РЕДАКТИРОВАТЬ: На основе ThorbenОтвет Янссена, оставшаяся часть моего первоначального ответа ниже этого может быть отклонена:)
Я не уверен, что некоторые более сложные ограничения (например, регулярное выражение для телефонных номеров) автоматически применяются к даннымслой или нет.Например, если у вас есть @Pattern
для вашего поля phoneNumber
, оно будет работать, когда ваш ввод десериализован в ваш объект.Но если ваши методы установки не имеют тех же ограничений проверки, у вас может быть объект в памяти из некоторого источника с неправильно отформатированным phoneNumber
, который может быть сохранен в базе данных.Наиболее безопасный способ использования этих ограничений, вероятно, включал бы использование программной проверки с Validator.validate () перед сохранением и обновлением базы данных.