Re: REST и JPA, форма редактирования нескольких сущностей
От: GreenTea  
Дата: 11.06.18 11:30
Оценка: 4 (1) +1
Здравствуйте, Slicer [Mirkwood], Вы писали:

SM>Мне интересно кто как делает из людей, кто уже давно с JPA работает.


Привет. Мы делаем примерно так
— допустим есть некий rest api который отдает и принимает для обновления водителя и его автомобили в формате json
— есть слой сущностей модели который мапятся на базу. Будем называть их entity
— есть слой сущностей модели, которые мапятся на json. Будем называть их view object (или сокращенно vo)
очень часто vo-шки очень похож на entity, но могут и немного отличаться. Например могут содержать меньше полей, если для представления эти поля не нужны.

Допустим теперь пришел запрос на сохранение водителя.

— в контроллере json автоматически мапится на vo-шки, так что в приложении уже можем работать с объектами.
К слову в spring, мапинг сущностей на json и обратно делается автоматически.
Контроллер также может выполнять базовые валидации, например чтобы поле было not null и тд.
Далее
— контроллер вызывает сервис, и передает туда vo.
— в сервисе: мапим эти vo-шки на entity (вручную или используя высокоуровневые мапперы вроде: dozer или java-object-merger).
— мержим с уже существующими в базе. Соответсвие между сущностями находим по id-шникам.
В сервисе может быть более сложная безнес валидация. Если, что не так — кидаем исключение,
которое потом перехватывается в глобальном интерсепторе исключений и преобразуется в соответсвующий
ответ клиенту.
— далее вызываем методы entity manager-а чтобы сохранить изменения (persist, merge).
Отредактировано 11.06.2018 14:03 GreenTea . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.