@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.
А тут же мы сами получаем каждый параметр.
  • Вопрос задан
  • 521 просмотр
Решения вопроса 2
leahch
@leahch
3Д специалист. Долго, Дорого, Дерьмово.
Смотрите, 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 объект.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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