Різниця між JPA та сплячим режимом

JPA vs Hibernate

Практично всі корпоративні програми вимагають регулярного доступу до реляційних баз даних. Але проблемою, з якою стикаються попередні технології (наприклад, JDBC), було невідповідність імпедансу (різниця між об'єктно-орієнтованими та реляційними технологіями). Вирішення цієї проблеми було введено шляхом введення абстрактного шару під назвою шар стійкості, який інкапсулює доступ до бази даних з бізнес-логіки. JPA (Java Persistent API) - це рамка, призначена для управління реляційними даними (за допомогою шару стійкості) в додатках Java. Існує багато реалізацій JPA, що використовуються у спільноті розробників Java. Hibernate - найпопулярніша така реалізація JPA (DataNucleus, EclipseLink і OpenJPA - деякі інші). Найновіша версія JPA (JPA 2.0) повністю підтримується Hibernate 3.5, яка була випущена в березні 2010 року.

Що таке JPA?

JPA - це основа для управління реляційними даними для Java. Його можна використовувати з програмами, що використовують JSE (Java Platform, Standard Edition) або JEE (Java Platform, Enterprise Edition). Його поточна версія - JPA 2.0, яка була випущена 10 грудня 2009 року. JPA замінила EJB 2.0 та EJB 1.1 субстанції (які сильно критикувались за важку вагу спільнотою розробників Java). Хоча об'єднані боби (в EJB) надавали об'єкти стійкості, багато розробників використовували для використання порівняно легкі об'єкти, пропоновані DAO (об'єкти доступу до даних) та іншими подібними рамками. В результаті було введено JPA, яка охопила багато чітких особливостей згаданих вище рам.

Послідовність, описана в JPA, охоплює API (визначений в javax.persistence), JPQL (платформа Java, Enterprise Edition) та метадані, необхідні для реляційних об'єктів. Стан суб'єкта стійкості, як правило, зберігається в таблиці. Екземпляри об'єкта відповідають рядкам таблиці реляційної бази даних. Метадані використовують для вираження зв’язків між сутностями. Анотації або окремі файли дескрипторів XML (розгорнуті разом із програмою) використовуються для визначення метаданих у класах сутностей. JPQL, схожий на запити SQL, використовується для запиту збережених об'єктів.

Що таке сплячка?

Hibernate - це структура, яку можна використовувати для об'єктно-реляційного відображення, призначеного для мови програмування Java. Більш конкретно, це бібліотека ORM (об'єктно-реляційне відображення), яка може бути використана для відображення об'єктно-реляційної моделі в звичайній реляційній моделі. Простіше кажучи, він створює відображення між класами Java та таблицями у реляційних базах даних, також між типами даних Java до SQL. Hibernate також може використовуватися для запиту даних та отримання даних, генеруючи дзвінки SQL. Тому програміст звільняється від ручного поводження з наборами результатів та перетворенням об'єктів. Hibernate випускається у вигляді вільної та відкритої програми, що поширюється за ліцензією GNU. Реалізація API JPA надається в режимі Hibernate 3.2 та пізніших версіях. Гевін Кінг є засновником сплячки.

Яка різниця між JPA та Hibernate?

JPA є основою для управління реляційними даними в Java-програмах, тоді як Hibernate - це специфічна реалізація JPA (в ідеалі, JPA та Hibernate не можна безпосередньо порівнювати). Іншими словами, Hibernate - це одна з найпопулярніших рамок, яка реалізує JPA. Hibernate реалізує JPA за допомогою бібліотек Hibernate Annotation і EntityManager, які реалізовані поверх бібліотек Hibernate Core. І EntityManager, і Анотації дотримуються життєвого циклу сплячого режиму. Найновіша версія JPA (JPA 2.0) повністю підтримується Hibernate 3.5. JPA має перевагу мати стандартизований інтерфейс, тому спільнота розробників буде з ним більше знайома, ніж зі сплячого режиму. З іншого боку, вбудовані інтерфейси зі сплячого режиму можна вважати більш потужними, оскільки його особливості є надвисокою характеристикою JPA.