Я не уверен в разнице. Я использую Hibernate, и в некоторых книгах они используют JavaBean и POJO как взаимозаменяемый термин. Я хочу знать, есть ли разница не только в контексте Hibernate, но и в общих понятиях.
java
terminology
pojo
DJphilomath
источник
источник
Все JavaBean-компоненты являются POJO, но не все POJO-объекты являются JavaBean-компонентами.
JavaBean - это объект Java, который удовлетворяет определенным правилам программирования:
источник
Serializable
.По словам Мартина Фаулера, POJO - это объект, который инкапсулирует бизнес-логику, в то время как бин (за исключением определения, уже указанного в других ответах) - это всего лишь контейнер для хранения данных, а операции, доступные над объектом, просто устанавливают и получают данные.
источник
POJO: Если класс может быть выполнен с базовым JDK, без какой-либо поддержки сторонних сторонних библиотек, то он называется POJO
JavaBean: Если класс содержит только атрибуты с аксессорами (сеттерами и геттерами), они называются javabeans. Обычно Java-бины не содержат никакой логики бизнес-процессов, а используются для хранения некоторых данных.
Все Javabeans являются POJO, но все POJO не являются Javabeans
источник
Pojo - Простой старый объект Java
Класс pojo - это обычный класс без каких-либо специальностей, класс, полностью не связанный с технологией / фреймворком. Класс не реализует из технологии / фреймворка и не расширяет API-интерфейс технологии / фреймворка тем, что класс называется классом pojo.
Класс pojo может реализовывать интерфейсы и расширять классы, но суперкласс или интерфейс не должны быть технологией / фреймворком.
Примеры :
1.
Класс ABC не реализует или не расширяет технологии / рамки, поэтому это класс pojo.
2.
Класс ABC, расширяющийся от api технологии сервлетов, поэтому это не класс pojo.
3.
Класс ABC реализуется из rmi api, поэтому это не класс pojo.
4.
этот интерфейс является частью языка Java, а не частью технологии / framework. так что это класс pojo.
5.
Здесь поток также является классом языка Java, так что это также класс Pojo.
6.
если класс Test расширяется или реализуется из технологий / инфраструктуры, то ABC также не является классом pojo, поскольку он наследует свойства класса Test. если класс Test не является классом pojo, то класс ABC также не является классом pojo.
7.
теперь этот пункт является исключительным случаем
@Entity
это аннотация, заданная hibernate api или jpa api, но все же мы можем назвать этот класс классом pojo. класс с аннотациями, данными из технологии / framework, в этом исключительном случае называется pojo class.источник
Специальности, перечисленные ниже с указанием причины
источник
POJOS
с определенными соглашениями (getter / setter, общедоступный конструктор без аргументов, приватные переменные) и находятся в действии (например, используются для чтения данных по форме)JAVABEANS
.источник
В итоге: сходства и различия:
Все бобы JAVA являются POJO, но не все POJO являются бобами JAVA.
источник
Вы видели формальные определения выше, сколько бы они ни стоили.
Но не слишком зацикливайтесь на определениях. Давайте просто посмотрим больше на смысл вещей здесь.
JavaBeans используются в приложениях Enterprise Java, где пользователи часто получают доступ к данным и / или коду приложения удаленно, то есть с сервера (через сеть или частную сеть) через сеть. Следовательно, соответствующие данные должны передаваться в последовательном формате на компьютеры пользователей или с них - следовательно, для объектов Java EE требуется реализация интерфейса Serializable. Эта большая часть природы JavaBean ничем не отличается от объектов приложений Java SE, данные которых считываются или записываются в файловую систему. Надежное использование классов Java по сети из ряда комбинаций пользовательских компьютеров и ОС также требует принятия соглашений об их обработке. Отсюда вытекает необходимость реализации этих классов как открытых, с закрытыми атрибутами, конструктором без аргументов и стандартизированными методами получения и установки.
Приложения Java EE также будут использовать классы, отличные от тех, которые были реализованы как JavaBeans. Они могут использоваться при обработке входных данных или организации выходных данных, но не будут использоваться для объектов, передаваемых по сети. Следовательно, приведенные выше соображения не должны применяться к ним, если они допустимы как объекты Java. Эти последние классы упоминаются как POJO - простые старые объекты Java.
В общем, вы могли видеть Java Beans как просто объекты Java, адаптированные для использования по сети.
С 1995 года в мире программного обеспечения очень много ажиотажа и немало хулиганства.
источник