Я не уверен в различии. Я использую Hibernate, и в некоторых книгах они используют JavaBean и POJO в качестве взаимозаменяемого термина. Я хочу знать, есть ли разница, а не только в контексте Hibernate, но как общие понятия.
В чем разница между JavaBean и POJO?
Ответ 1
JavaBean следует определенным соглашениям. Именование геттеров/сеттеров, имеющих стандартный конструктор по умолчанию, сериализуемый и т.д. Подробнее см. Соглашения JavaBeans.
POJO (обычный-Java-объект) строго определен. Это объект Java, который не имеет требования реализовать конкретный интерфейс или выводится из определенного базового класса или использует конкретные аннотации для того, чтобы быть совместимым с данной структурой, и может быть любым произвольным (часто относительно простым) Объект Java.
Ответ 2
Все JavaBeans - это POJO, но не все POJO - это JavaBeans.
JavaBean - это объект Java, который удовлетворяет определенным соглашениям о программном обеспечении:
- класс JavaBean должен реализовывать либо Serializable, либо Externalizable;
- класс JavaBean должен иметь открытый конструктор no-arg;
- все свойства JavaBean должны иметь общедоступные методы setter и getter (в зависимости от ситуации);
- все переменные экземпляра JavaBean должны быть частными.
Ответ 3
По словам Мартина Фаулера, POJO - это объект, который инкапсулирует бизнес-логику, а Bean (за исключением определения, уже указанного в других ответах) - это немного больше, чем контейнер для хранения данных, а операции, доступные на объекте, просто устанавливаются и получить данные.
Этот термин был придуман, в то время как Ребекка Парсонс, Джош Маккензи и я были готовясь к разговору на конференции в сентябре 2000 года. В беседе мы указывали на многочисленные преимущества кодирования бизнес-логики в регулярные java-объекты вместо использования Entity Beans. Мы задавались вопросом, почему люди были против использования обычных объектов в своих системах и пришел к выводу, что это связано с тем, что простым объектам не хватало причудливого имени. Так мы дали им один, и он поймал очень хорошо.
Ответ 4
POJO: Если класс может быть запущен с базовым JDK, без поддержки других сторонних сторонних библиотек, то его вызываемый POJO
JavaBean: если класс содержит только атрибуты с аксессуарами (сеттерами и геттерами), они называются javabeans.Java beans обычно не содержат никакой логики бизнеса, а используются для хранения некоторых данных.
Все джавабеи - ПОЖО, но все POJO не являются джавабеями
Ответ 5
Pojo - Обычный объект Java
класс pojo - это обычный класс без каких-либо специальностей, класс, полностью не связанный с технологией /framework. Класс не реализуется из технологии/структуры и не распространяется на технологию/инфраструктуру 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.so это класс 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.
класс с аннотациями, данными из технологии/структуры, называется классом pojo в этом исключительном случае.
Ответ 6
POJOS
с определенными соглашениями (getter/setter, public no-arg constructor, private variables) и находятся в действии (например, используются для чтения данных по форме): JAVABEANS
.