@Biaci_Anj

Зачем нужно DTO в простых сервлетах?

Объясните, пожалуйста, надо ли использовать DTO в сервлетах?
Я пытаюсь понять логически зачем
Параметры я получаю вот так и сразу делаю Entity.
String name = req.getParameter("name");
        String description = req.getParameter("description");
        String category = req.getParameter("category");
        String price = req.getParameter("price");

В чем был бы смысл создавать сначала ДТО тут и из него делать Entity?
В спринге могу понять, там мы используем аннотации и объект должен представлять собой request.
А тут же мы сами получаем каждый параметр.
  • Вопрос задан
  • 721 просмотр
Решения вопроса 2
leahch
@leahch
3D специалист. Dолго, Dорого, Dерьмово.
Смотрите, entity в базе данных может содержать гораздо больше полей и объектов, чем Вы хотите передать на верх, или получить в виде формы.
Как пример, вывод информации о пользователе. В entity скорее всего будут содержаться поля о хеше пароля, аклах (ACLs), дополнительных связях с другими объектами. На верх же, скорее всего эту информацию передавать не стоит, это внутренняя кухня вашего приложения. Для этого и создают DTO (data transfer object), в котором присутствует ровно то, что нужно передать. И да, нужно делать мерджинг или инкапсуляцию между entity и dto каждый раз туда и обратно. С одной стороны - лишние действия и преобразования из объектов в объекты, в другой - гарантия безопасности и разделение логики хранения и логики передачи сущностей.
Нужно ли это конкретно в вашем приложении - не скажет никто, кроме Вас. Но, хорошая практика - делать dto на каждый случай.
Ответ написан
Комментировать
azerphoenix
@azerphoenix Куратор тега Java
Java Software Engineer
Добрый день.
DTO - data transfer object это шаблон проектирования.
Варианты использования:
Из клиента прибегает DTO. После чего он маппита в Entity и сохраняется / обновляется в БД.
Либо наоборот из БД вы маппите ваши сущности в DTO и отдаете их в нужном виде.
Это позволяет обезопасить приложение путем создания доп. прослойки. также вы можете отдавать на клиент только нужную для него информацию, а не всю сущность со всеми зависимостями и т.д.
Также на уровне DTO вы можете провести доп. валидацию отправленных от клиента данных.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@nApoBo3
Когда вам нужно будет поменять объект в базе, добавить промежуточный слой логики или дополнить передаваемые данные вы поймёте зачем нужен dto объект.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы