logo

JPA срещу Hibernate

Какво е 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) като обектно-ориентиран език за заявки за извършване на операции с бази данни.