Какво е JPA?
JPA (Java Persistence API) е спецификация на Java, която се използва за достъп, управление и запазване на данни между Java обект и релационна база данни. Счита се за стандартен подход за Object Relational Mapping.
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 Query Language (HQL) като обектно-ориентиран език за заявки за извършване на операции с бази данни. |