В чем разница между JavaBean и POJO?
Я не уверен насчет разницы. Я использую Hibernate, и в некоторых книгах они используют JavaBean и POJO как взаимозаменяемый термин. Я хочу знать, есть ли разница не только в контексте Hibernate, но и в общих понятиях.
6 ответов:
JavaBean следует определенным соглашениям. Геттер/сеттер именования, имеющий открытый конструктор по умолчанию, будучи serialisable и т. д. Смотрите Соглашения JavaBeans для более подробной информации.
POJO (plain-old-Java-object) не определен строго. Это объект Java, который не требует реализации определенного интерфейса или производного от определенного базового класса, или использовать определенные аннотации, чтобы быть совместимым с данной платформой, и может быть любым произвольным (часто относительно простой) объект Java.
всего JavaBeans являются POJO-объекты, но не все объекты POJO являются компоненты JavaBeans.
JavaBean - это объект Java, который удовлетворяет определенным соглашениям программирования:
- В класса JavaBean должен реализовать Serializable или externalizable;
- класс JavaBean должен иметь открытый конструктор no-arg;
- все свойства JavaBean должны иметь общедоступные методы setter и getter (по мере необходимости);
- все переменные экземпляра JavaBean должны быть частный.
согласно Мартину Фаулеру POJO-это объект, который инкапсулирует бизнес-логику, в то время как Bean (за исключением определения, уже указанного в других ответах) - это немного больше, чем контейнер для хранения данных, а операции, доступные на объекте, просто устанавливают и получают данные.
термин был придуман в то время как Ребекка Парсонс, Джош Маккензи и я были подготовка к выступлению на конференции в сентябре 2000 года. В разговоре мы указывали на многие преимущества кодирование бизнес-логики в обычные объекты java вместо использования компонентов сущности. Мы удивлялись, почему люди были так против использования обычных объектов в своих системах и пришел к выводу, что это потому, что простые предметы не имеют причудливого названия. Так мы дали им один, и он очень хорошо прижился.
POJO: если класс может быть выполнен с базовым JDK, без поддержки каких-либо других внешних сторонних библиотек, то его называют POJO
JavaBean: если класс содержит только атрибуты с аксессорами(сеттеры и геттеры), они называются javabeans.Java-бобы обычно не содержат никакой логики бизнеса, а те, которые используются для хранения некоторых данных в нем.
всего JavaBeans являются объекты POJO POJO-класс, но все не JavaBeans с
Pojo-простой старый объект java
класс pojo-это обычный класс без каких-либо специальностей,класс, полностью свободно связанный с технологией/фреймворком.класс не реализует из технологии / framework и не распространяется из технологии/framework api, что класс называется pojo class.
класс 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 не a часть технологии / фреймворка. так что это класс pojo.
5.
class ABC extends Thread{ -- }
здесь поток также является классом языка java, поэтому это также класс pojo.
6.
class ABC extends Test{ -- }
если тестовый класс расширяется или реализуется из technologies/framework, то ABC также не является классом pojo, поскольку он наследует свойства тестового класса. если тестовый класс не является классом pojo, то класс ABC также не является классом pojo.
7.
вот этот пункт это исключительный случай
@Entity class ABC{ -- }
@Entity
является аннотацией, заданной hibernate api или JPA api, но все же мы можем назвать этот класс классом pojo. класс с аннотациями, заданными из технологии / фреймворка, называется классом pojo в этом исключительном случае.