Що таке JPA?
JPA (Java Persistence API) — це специфікація Java, яка використовується для доступу, керування та збереження даних між об’єктом Java і реляційною базою даних. Це вважається стандартним підходом для об’єктно-реляційного відображення.
JPA можна розглядати як міст між об’єктно-орієнтованими моделями домену та системами реляційних баз даних. Будучи специфікацією, JPA не виконує жодних операцій самостійно. Таким чином, це вимагає реалізації. Отже, такі інструменти ORM, як Hibernate, TopLink і iBatis, реалізують специфікації JPA для збереження даних.
Що таке Hibernate?
Hibernate — це структура Java, яка використовується для зберігання об’єктів Java у системі реляційної бази даних. Це легкий інструмент ORM (Object Relational Mapping) з відкритим кодом.
Hibernate є реалізацією JPA. Отже, він відповідає загальним стандартам, передбаченим JPA.
Необхідність JPA
Як ми вже бачили, JPA є специфікацією. Він забезпечує загальний прототип і функціональність для інструментів ORM. Реалізуючи одну специфікацію, усі інструменти ORM (наприклад, Hibernate, TopLink, iBatis) відповідають загальним стандартам. У майбутньому, якщо ми захочемо переключити нашу програму з одного інструменту ORM на інший, ми зможемо зробити це легко.
JPA проти Hibernate
JPA | сплячий режим |
---|---|
Java Persistence API (JPA) визначає керування реляційними даними в програмах Java. | Hibernate — це інструмент об’єктно-реляційного відображення (ORM), який використовується для збереження стану об’єкта Java у базі даних. |
Це лише специфікація. Різні інструменти ORM реалізують його для збереження даних. | Це одна з найбільш часто використовуваних реалізацій JPA. |
Це визначено в javax.persistence пакет. | Це визначено в org.hibernate пакет. |
The EntityManagerFactory інтерфейс використовується для взаємодії з фабрикою менеджера об’єктів для блоку збереження. Таким чином, він забезпечує менеджер сутності. | Це використовує SessionFactory інтерфейс для створення екземплярів сесії. |
Це використовує EntityManager інтерфейс для створення, читання та видалення операцій для екземплярів відображених класів сутностей. Цей інтерфейс взаємодіє з контекстом збереження. | Це використовує Сесія інтерфейс для створення, читання та видалення операцій для екземплярів відображених класів сутностей. Він працює як інтерфейс часу виконання між програмою Java і Hibernate. |
Це використовує Java Persistence Query Language (JPQL) як об’єктно-орієнтовану мову запитів для виконання операцій з базою даних. | Це використовує Мова запитів Hibernate (HQL) як об’єктно-орієнтована мова запитів для виконання операцій з базою даних. |