Видели несколько похожих вопросов:
- В чем разница между JavaBean и POJO?
- В чем разница между POJO (простой старый объект Java) и DTO (объект передачи данных)?
Можете ли вы также сказать мне контексты, в которых они используются? Или цель их?
Видели несколько похожих вопросов:
Можете ли вы также сказать мне контексты, в которых они используются? Или цель их?
Ответы:
JavaBeans
JavaBean - это класс, который следует соглашениям JavaBeans, определенным Sun. В Википедии есть довольно хорошее резюме о том, что такое JavaBeans :
POJO
Простой старый Java-объект или POJO - это термин, первоначально введенный для обозначения простого облегченного Java-объекта, не реализующего никакого
javax.ejb
интерфейса, в отличие от тяжелого EJB 2.x (особенно Entity Beans, Session Beans без состояния не так уж плохи для IMO). Сегодня этот термин используется для обозначения любого простого объекта без лишних вещей. Опять же, Википедия делает хорошую работу по определению POJO :Объект значения
Объект Value или VO - это такой объект,
java.lang.Integer
который содержит значения (следовательно, объекты значений). Для более формального определения я часто обращаюсь к описанию Мартина Фаулера Value Object :Объект Передачи Данных
Data Transfer Object или DTO - это (анти) шаблон, представленный в EJB. Вместо того чтобы выполнять много удаленных вызовов в EJB, идея заключалась в том, чтобы инкапсулировать данные в объект значения, который можно передать по сети: объект передачи данных. В Википедии есть достойное определение объекта передачи данных :
Таким образом, для многих людей DTO и VO - это одно и то же (но Фаулер использует VO для обозначения чего-то другого, как мы видели). В большинстве случаев они следуют соглашениям JavaBeans и, таким образом, также являются JavaBeans. И все это POJO.
источник
class SomeClass { public String foo;public String bar; }
внутри класса со сложной логикой, наверняка это не JavaBean, это не может быть VO, поскольку он изменчив, может ли это быть DTO? Хотя он не предназначен для удаленных вызовов любого рода. Можно ли считать это POJO?DTO против VO
DTO - Объекты передачи данных - это просто контейнеры данных, которые используются для передачи данных между уровнями и уровнями.
DTO в основном использовался для эффективной передачи данных по сети, может быть даже из JVM в другую JVM.
DTO часто
java.io.Serializable
- для передачи данных через JVM.VO - Объект значения [1] [2] представляет собой фиксированный набор данных и похож на перечисление Java. Идентичность объекта-значения основана на их состоянии, а не на идентичности объекта и является неизменной. Примером реального мира могут быть Color.RED, Color.BLUE, SEX.FEMALE и т. Д.
POJO против JavaBeans
[1] Java-Beanness POJO состоит в том, что все его частные атрибуты доступны через общедоступные методы получения и установки, которые соответствуют соглашениям JavaBeans. например
[2] JavaBeans должен реализовывать Serializable и иметь конструктор без аргументов, тогда как в POJO таких ограничений нет.
источник
В принципе,
DTO: «Объекты передачи данных» могут перемещаться между отдельными уровнями в архитектуре программного обеспечения.
VO: «Объекты стоимости» содержат такие объекты, как Integer, Money и т. Д.
POJO: Простой старый Java-объект, который не является специальным объектом.
Java Beans: требует, чтобы a
Java Class
был сериализуемым, имелno-arg
конструктор, геттер и сеттер для каждого поляисточник
Java Beans - это не то же самое, что EJB.
Спецификация JavaBeans в Java 1.0 была попыткой Sun позволить объектам Java манипулировать в IDE, которая выглядела как VB. Были правила, установленные для объектов, которые квалифицируются как «Java Beans»:
EJB пришли позже. Они объединяют распределенные компоненты и транзакционную модель, работающие в контейнере, который управляет потоками, пулами, жизненным циклом и предоставляет сервисы. Они очень далеки от Java Beans.
DTO возникли в контексте Java, потому что люди узнали, что спецификация EJB 1.0 слишком «болтлива» с базой данных. Вместо того, чтобы делать обходные шаги для каждого элемента данных, люди будут упаковывать их в Java Beans оптом и отправлять их вокруг.
POJO были реакцией против EJB.
источник
POJO : Это Java-файл (класс), который не расширяет и не реализует какой-либо другой Java-файл (класс).
Bean : Это Java-файл (класс), в котором все переменные являются закрытыми, методы являются общедоступными, и для доступа к переменным используются соответствующие методы получения и установки.
Обычный класс : это Java-файл (класс), который может состоять из открытых / закрытых / стандартных / защищенных переменных и который может расширять или не расширять или реализовывать другой Java-файл (класс).
источник
Первый разговор о
Нормальный класс - это означает, что любой класс определяет это, как правило, в Java, это означает, что вы создаете другой тип свойств метода и т. Д.
Бин - Бин - это ничто, это всего лишь объект этого конкретного класса, с помощью этого бина вы можете получить доступ к своему классу Java так же, как к объекту. ,
и после этого поговорим о последнем POJO
POJO - POJO - это тот класс, который не имеет никаких сервисов, у него есть только конструктор по умолчанию и частное свойство, а также это свойство для установки значения, соответствующего методам setter и getter. Это короткая форма простого Java-объекта.
источник
Разница между ними значением объектно-шаблоны и-данные передачи-паттерн
источник