Я не впевнений у різниці. Я використовую Hibernate, і в деяких книгах вони використовують JavaBean і POJO як взаємозамінний термін. Хочу знати, чи є різниця не лише в умовах сплячого режиму, а як загальні поняття.
Я не впевнений у різниці. Я використовую Hibernate, і в деяких книгах вони використовують JavaBean і POJO як взаємозамінний термін. Хочу знати, чи є різниця не лише в умовах сплячого режиму, а як загальні поняття.
Відповіді:
JavaBean дотримується певних умов. Іменування Getter / setter, що має загальнодоступний конструктор за замовчуванням, його серіалізація тощо. Докладніше див. У Конвенціях JavaBeans .
POJO (звичайний-старий-Java-об'єкт) не визначений жорстко. Це об’єкт Java, який не вимагає впроваджувати певний інтерфейс або походить з певного базового класу, або використовувати певні примітки для того, щоб бути сумісним із заданим фреймворком, і може бути будь-яким довільним (часто відносно простим) Об'єкт Java.
Усі JavaBeans - POJO, але не всі POJO - це JavaBeans.
JavaBean - це об'єкт Java, який задовольняє певним умовам програмування:
Serializable
.
За словами Мартіна Фаулера, POJO - це об'єкт, який інкапсулює ділову логіку, тоді як Бін (за винятком визначення, яке вже зазначено в інших відповідях) - це трохи більше, ніж контейнер для зберігання даних, а операції, доступні на об'єкті, просто встановлюють і отримують дані.
Цей термін був введений, поки Ребекка Парсонс, Джош Макензі і я готувались до розмови на конференції у вересні 2000 року. У бесіді ми вказували на багато переваг кодування ділової логіки в звичайні об'єкти Java, а не на використання Entity Beans. Ми поцікавились, чому люди настільки проти використання звичайних об’єктів у своїх системах і зробили висновок, що це тому, що простим об’єктам не вистачає фантазійної назви. Таким чином, ми дали їм один, і це дуже приємно.
POJO: Якщо клас можна виконати з базовим JDK, без будь-якої іншої сторонньої бібліотеки, що підтримується, його називають POJO
JavaBean: Якщо клас містить лише атрибути з аксесуарами (сеттери та getters), вони називаються javabeans.Java квасоля, як правило, не містить ніякої логіки bussiness, а ті, які використовуються для зберігання в ньому деяких даних.
Усі Javabeans - POJO, але всі POJO - не Javabians
Pojo - Простий старий об’єкт java
Клас pojo - це звичайний клас без будь-яких спеціальностей, клас повністю вільно поєднаний з технологією / фреймворком. Клас не реалізовується від технології / фреймворку і не поширюється на технологію / фреймворк 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, не є частиною технології / фреймворку. тому це клас pojo.
5.
class ABC extends Thread{
--
}
тут нитка також є класом мови java, тому це також клас pojo.
6.
class ABC extends Test{
--
}
якщо тестовий клас поширюється або реалізується з технологій / фреймворку, то ABC також не є класом pojo, оскільки він успадковує властивості класу Test. якщо тестовий клас не є класом pojo, то клас ABC також не є класом pojo.
7.
зараз цей момент є винятковим випадком
@Entity
class ABC{
--
}
@Entity
це анотація, надана сплячою api або jpa api, але ми все ще можемо назвати цей клас класом pojo. Клас з анотаціями, наданими з технології / фреймворку, у цьому винятковому випадку називається класом pojo.
POJOS
з певними умовами (getter / setter, загальнодоступний конструктор no-arg, приватні змінні) і діють (наприклад, використовуються для читання даних за формою) 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 - Plain Old Java Objects.
Загалом, ви могли бачити Java Beans як просто об'єкти Java, пристосовані для використання в мережі.
У світі програмного забезпечення з 1995 року надзвичайно багато шуму - і не мала кількість балаканини.