Я не уверен в разнице. Я использую Hibernate, и в некоторых книгах они используют JavaBean и POJO как взаимозаменяемый термин. Я хочу знать, есть ли разница не только в контексте Hibernate, но и в общих понятиях.
Я не уверен в разнице. Я использую Hibernate, и в некоторых книгах они используют JavaBean и POJO как взаимозаменяемый термин. Я хочу знать, есть ли разница не только в контексте Hibernate, но и в общих понятиях.
Ответы:
JavaBean следует определенным соглашениям. Именование геттера / сеттера, наличие общедоступного конструктора по умолчанию, возможность сериализации и т. Д. См. Соглашения JavaBeans .
POJO (обычный старый Java-объект) строго не определен. Это Java-объект, который не требует реализации определенного интерфейса или наследования от определенного базового класса, или использования определенных аннотаций для совместимости с данной средой, и может быть любым произвольным (часто относительно простым) Java-объект
Все JavaBean-компоненты являются POJO, но не все POJO-объекты являются JavaBean-компонентами.
JavaBean - это объект Java, который удовлетворяет определенным правилам программирования:
Serializable
.
По словам Мартина Фаулера, POJO - это объект, который инкапсулирует бизнес-логику, в то время как бин (за исключением определения, уже указанного в других ответах) - это всего лишь контейнер для хранения данных, а операции, доступные над объектом, просто устанавливают и получают данные.
Этот термин был придуман, когда Ребекка Парсонс, Джош МакКензи и я готовились к выступлению на конференции в сентябре 2000 года. В этой беседе мы говорили о многих преимуществах кодирования бизнес-логики в обычные объекты Java, а не с использованием Entity Beans. Мы задались вопросом, почему люди были против использования обычных объектов в своих системах, и пришли к выводу, что это потому, что простым объектам не хватает причудливого имени. Итак, мы дали им один, и это очень хорошо завоевало популярность.
POJO: Если класс может быть выполнен с базовым JDK, без какой-либо поддержки сторонних сторонних библиотек, то он называется POJO
JavaBean: Если класс содержит только атрибуты с аксессорами (сеттерами и геттерами), они называются javabeans. Обычно Java-бины не содержат никакой логики бизнес-процессов, а используются для хранения некоторых данных.
Все Javabeans являются POJO, но все POJO не являются Javabeans
Pojo - Простой старый объект Java
Класс pojo - это обычный класс без каких-либо специальностей, класс, полностью не связанный с технологией / фреймворком. Класс не реализует из технологии / фреймворка и не расширяет API-интерфейс технологии / фреймворка тем, что класс называется классом pojo.
Класс pojo может реализовывать интерфейсы и расширять классы, но суперкласс или интерфейс не должны быть технологией / фреймворком.
Примеры :
1.
class ABC{
----
}
Класс ABC не реализует или не расширяет технологии / рамки, поэтому это класс pojo.
2.
class ABC extends HttpServlet{
---
}
Класс ABC, расширяющийся от api технологии сервлетов, поэтому это не класс pojo.
3.
class ABC implements java.rmi.Remote{
----
}
Класс ABC реализуется из rmi api, поэтому это не класс pojo.
4.
class ABC implements java.io.Serializable{
---
}
этот интерфейс является частью языка Java, а не частью технологии / framework. так что это класс pojo.
5.
class ABC extends Thread{
--
}
Здесь поток также является классом языка Java, так что это также класс Pojo.
6.
class ABC extends Test{
--
}
если класс Test расширяется или реализуется из технологий / инфраструктуры, то ABC также не является классом pojo, поскольку он наследует свойства класса Test. если класс Test не является классом pojo, то класс ABC также не является классом pojo.
7.
теперь этот пункт является исключительным случаем
@Entity
class ABC{
--
}
@Entity
это аннотация, заданная hibernate api или jpa api, но все же мы можем назвать этот класс классом pojo. класс с аннотациями, данными из технологии / framework, в этом исключительном случае называется pojo class.
POJOS
с определенными соглашениями (getter / setter, общедоступный конструктор без аргументов, приватные переменные) и находятся в действии (например, используются для чтения данных по форме) JAVABEANS
.
В итоге: сходства и различия:
java beans: Pojo:
-must extends serializable -no need to extends or implement.
or externalizable.
-must have public class . - must have public class
-must have private instance variables. -can have any access specifier variables.
-must have public setter and getter method. - may or may not have setter or getter method.
-must have no-arg constructor. - can have constructor with agruments.
Все бобы JAVA являются POJO, но не все POJO являются бобами JAVA.
Вы видели формальные определения выше, сколько бы они ни стоили.
Но не слишком зацикливайтесь на определениях. Давайте просто посмотрим больше на смысл вещей здесь.
JavaBeans используются в приложениях Enterprise Java, где пользователи часто получают доступ к данным и / или коду приложения удаленно, то есть с сервера (через сеть или частную сеть) через сеть. Следовательно, соответствующие данные должны передаваться в последовательном формате на компьютеры пользователей или с них - следовательно, для объектов Java EE требуется реализация интерфейса Serializable. Эта большая часть природы JavaBean ничем не отличается от объектов приложений Java SE, данные которых считываются или записываются в файловую систему. Надежное использование классов Java по сети из ряда комбинаций пользовательских компьютеров и ОС также требует принятия соглашений об их обработке. Отсюда вытекает необходимость реализации этих классов как открытых, с закрытыми атрибутами, конструктором без аргументов и стандартизированными методами получения и установки.
Приложения Java EE также будут использовать классы, отличные от тех, которые были реализованы как JavaBeans. Они могут использоваться при обработке входных данных или организации выходных данных, но не будут использоваться для объектов, передаваемых по сети. Следовательно, приведенные выше соображения не должны применяться к ним, если они допустимы как объекты Java. Эти последние классы упоминаются как POJO - простые старые объекты Java.
В общем, вы могли видеть Java Beans как просто объекты Java, адаптированные для использования по сети.
С 1995 года в мире программного обеспечения очень много ажиотажа и немало хулиганства.