Chvalov
@Chvalov

Какие зависимости подключать для валидации форм Spring Boot?

Что то я запутался с зависимостями, начал гуглить как правильно сделать валидацию формы, а именно email поля, чтобы не костылять с регулярками.

Нашел ресурс на котором говорится
We will need the validation-api-1.1.0.Final.jar and hibernate-validator-5.0.1.Final.jar files in order to use the Bean Validation API in our Spring MVC application.

maven pom
<dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
    <version>1.1.0.Final</version>
</dependency>

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>5.0.1.Final</version>
 </dependency>

И тут я не совсем понял, зачем добавлять зависимости валидатора javax и hibernate если они идентичны или нет ?
Если идентичны то не вижу никакого в этом смысла.

И еще, как я понимаю зависимости spring-boot-xxxxx наследуются от других библиотек
<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-validation</artifactId>
</dependency>

В частности данная spring-boot-starter-validation наследуется от hibernate-validator, если посмотреть в данный pom.xml

Но и тут для меня становится не понятно, если наследуется от hibernate-validator, то почему в коде подгружается javax.validation ?
import javax.validation.constraints.Email;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;


И еще вопрос, заметил такое явление в чужых проектах
Для работы с БД используют Hibernate, а Entity анотации используют javax, но IDE также предлагает аналогичные зависимости из пакета hibernate, в чем преимущество javax анотаций перед хибером ?
  • Вопрос задан
  • 642 просмотра
Пригласить эксперта
Ответы на вопрос 1
piatachki
@piatachki
Тут дело в разнице между спецификацией и реализацией. Java EE - это спецификации. Договоренности, как дальше жить в условиях безжалостного кровавого энтерпрайза. JPA - её часть, одна из спецификаций, например.

Hibernate - одна из реализаций JPA. По моему даже RI. Почему используются аннотации из пакета Javax? Чтобы автор мог проще поменять библиотеку Hibernate на другую без переписывания кода. Поэтому при прочих равных рекомендуется использовать аннотации Java EE.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы