В чем разница между POJO (простой старый Java-объект) и DTO (объект передачи данных)?
Я не могу найти разницу между ними. Кто-нибудь знает, как их дифференцировать?
8 ответов
POJO или "Простой старый Java-объект" - это имя, используемое для описания "обычных" Java-объектов, в отличие от EJB (изначально) или чего-либо, что считается "тяжелым" с зависимостями от других технологий.
DTO или "Data Transfer Object" - это объект для... ну... передачи данных, обычно между вашими "бизнес" -классами и уровнем персистентности. Обычно это класс без поведения, очень похожий на структуру в стиле Си. Они являются устаревшей концепцией.
POJO - это простой Java-объект, аббревиатура используется для того, чтобы подчеркнуть, что в нем нет ничего особенного.
DTO - это объект передачи данных, который используется для инкапсуляции данных, которые передаются по соединению между уровнями или подсистемами. См. Статью в Википедии, это также шаблон Core J2EE ( http://www.oracle.com/technetwork/java/transferobject-139757.html).
Все DTO являются POJO, но не все POJO DTO. Примером POJO, который не является DTO, является бизнес-класс, который содержит состояние и поведение (бизнес-логика).
DTO - это pojo, но pojo - это не dto, потому что у pojo может быть больше поведения, но DTO просто не работает
Документ Oracle имеет четкое описание.
DTO (Объект передачи данных): это шаблон проектирования Core J2EE, используемый для передачи данных в системе. DTO Pattern
POJO (Простой старый Java-объект): это просто аббревиатура, которую люди используют для обозначения простого java-объекта (который в настоящее время сильно аннотирован для выполнения некоторой значащей полной работы).
POJO может иметь поведение. Книга POJO в действии подробно описывает использование POJOS для разработки приложений. DTO - это контейнеры данных, которые помогают переносить данные с одного уровня на другой. DTO не должны содержать никакого поведения.
Я мог понять разницу между POJO и DTO из этого предложения вики DTO:
DTO - это простые объекты, которые не должны содержать какой-либо бизнес-логики, но могут содержать механизмы сериализации и десериализации для передачи данных по сети.
Кроме того, DTO отлично визуализируется и подробно описывается в Каталоге шаблонов архитектуры корпоративных приложений Мартина Фаулера.
POJO = Простой старый объект Java
DTO = Объект передачи данных
-- Редактировать
Ну, это предполагает, что вы не знаете, что означают аббревиатуры. Pojo - это просто объект, свободный от какой-либо цепочки наследования. DTO существует в вашей модели данных, поэтому, вероятно, следует строгой цепочке, связывающей его с данным объектом.