#java #oop #model-view-controller #architecture
#java #ооп #модель-представление-контроллер #архитектура
Вопрос:
Контроллер должен работать с DTO, обслуживать модели предметной области. Для связи между контроллером и сервисом, какое лучшее место для преобразования из DTO в модели, в контроллере или сервисе? А также, какое лучшее место для построения DTO после выполнения служебной логики?
Комментарии:
1. вы можете написать отдельные MappingUtils, которые будут сопоставлять DTO с моделями, а models — с DTO
Ответ №1:
Лучшим местом для преобразования из DTO в модели и наоборот является Mapper.
Вы не должны помещать логику преобразования в код службы, потому что DTO может использоваться несколькими службами. Помещение его в код службы делает его привязанным к одному конкретному сервису. Не решение.
Вы не должны помещать логику преобразования в контроллер, потому что сервисы, чтобы что-то преобразовать, становятся зависимыми от контроллера. Не решение.
Создайте Mapper
интерфейс. Предоставьте для этого реализацию (вы даже можете использовать библиотеку для сопоставления, например ModelMapper). И используйте этот mapper для преобразования, когда вам нужно.
Комментарии:
1. спасибо за ответ, и mapper должен выполняться с контроллера, верно? и после получения результатов от сервиса нам нужно снова подготовить DTO с помощью mapper, который выполняется из контроллера, правильно?