Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методички / spring_lab4.pdf
Скачиваний:
0
Добавлен:
28.06.2026
Размер:
111.26 Кб
Скачать

@PostMapping("/add")

public UserDto createUser(@RequestBody @Valid UserDto request) {

...

}

Назначение аннотаций:

@NotBlank — проверяет, что строка не null и не пустая

@Size — задает ограничение по длине строки

@Email — проверяет формат email

@Pattern — проверяет соответствие регулярному выражению

@Valid — указывает Spring выполнить валидацию объекта перед вызовом метода контроллера

Если входные данные не соответствуют ограничениям, Spring вернет ошибку 400 Bad Request, а метод контроллера не будет выполнен.

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

Самостоятельные задания

1.Вынесите повторяющийся код преобразования Notification в NotificationDto в отдельный метод mapToDto() или в отдельный mapper-класс.

2.Реализуйте проверку номера телефона с помощью @Pattern .

3.Добавьте метод репозитория поиска уведомлений по статусу и каналу одновременно.

4.Добавьте метод репозитория с сортировкой уведомлений по дате создания в порядке убывания.

5.Реализуйте собственный @Query для поиска уведомлений пользователя по его

recipientId и статусу.

6.Добавьте в NotificationService метод, который при установке статуса SENT автоматически записывает значение в поле sentAt .

7.Проверьте поведение приложения при попытке создать уведомление для несуществующего пользователя.

Контрольные вопросы

1.Что такое Spring Data JPA и зачем он нужен?

2.Какую роль выполняет Hibernate в приложении?

3.Что делает интерфейс JpaRepository ?

4.Как реализуется связь один-ко-многим между User и Notification ?

5.Что делает аннотация @ManyToOne ?

6.Как работает @Transactional ?

7.В чем разница между JPQL и native SQL в @Query ?

8.Что делает аннотация @Valid в контроллере?

9.Для чего используются аннотации @NotBlank , @Email , @Pattern ?

10.Почему DTO удобнее валидировать, чем JPA-сущности напрямую?

21

Соседние файлы в папке Методички