JPA - Введение
Любое корпоративное приложение выполняет операции с базой данных, сохраняя и извлекая огромные объемы данных. Несмотря на все доступные технологии управления хранилищем, разработчикам приложений обычно трудно эффективно выполнять операции с базой данных.
Как правило, разработчики Java используют много кода или проприетарную структуру для взаимодействия с базой данных, тогда как при использовании JPA нагрузка взаимодействия с базой данных значительно снижается. Он образует мост между объектными моделями (программа Java) и реляционными моделями (программа базы данных).
Несоответствия между реляционной и объектной моделями
Реляционные объекты представлены в табличном формате, а объектные модели представлены в виде взаимосвязанного графа объектного формата. При сохранении и извлечении объектной модели из реляционной базы данных некоторые несоответствия возникают по следующим причинам:
- Granularity : Объектная модель имеет большую степень детализации, чем реляционная модель. 
- Subtypes : Подтипы (означает наследование) поддерживаются не всеми типами реляционных баз данных. 
- Identity : Как и объектная модель, реляционная модель не раскрывает идентичность при написании равенства. 
- Associations : Реляционные модели не могут определять множественные отношения при изучении модели предметной области. 
- Data navigation : Навигация по данным между объектами в объектной сети различается в обеих моделях. 
Что такое JPA?
Java Persistence API - это набор классов и методов для постоянного хранения огромных объемов данных в базе данных, предоставляемой Oracle Corporation.
Где использовать JPA?
Чтобы уменьшить нагрузку на написание кодов для управления реляционными объектами, программист следует структуре «JPA Provider», которая позволяет легко взаимодействовать с экземпляром базы данных. Здесь необходимая структура берется на себя JPA.
 
                История JPA
Более ранние версии EJB, определенный уровень сохраняемости в сочетании с уровнем бизнес-логики с использованием интерфейса javax.ejb.EntityBean.
- При представлении EJB 3.0 уровень сохраняемости был разделен и определен как JPA 1.0 (Java Persistence API). Спецификации этого API были выпущены вместе со спецификациями JAVA EE5 11 мая 2006 г. с использованием JSR 220. 
- JPA 2.0 был выпущен со спецификациями JAVA EE6 10 декабря 2009 г. как часть Java Community Process JSR 317. 
- JPA 2.1 был выпущен со спецификацией JAVA EE7 22 апреля 2013 г. с использованием JSR 338. 
Провайдеры JPA
JPA - это API с открытым исходным кодом, поэтому различные корпоративные поставщики, такие как Oracle, Redhat, Eclipse и т. Д., Предоставляют новые продукты, добавляя в них привкус сохраняемости JPA. Некоторые из этих продуктов включают:
Hibernate, Eclipselink, Toplink, Spring Data JPA, etc.