JPA - это просто спецификация - это набор интерфейсов для предоставления общего API.Он описывает доступ к реляционной базе данных, чтобы помочь разработчикам управлять несколькими поставщиками БД.Существует несколько реализаций JPA, в качестве ссылки используется EclipseLink, разработанная в рамках Eclipse Public License.Другими словами, это стандарт, такой как SQL-92 или SQL: 2006.Базы данных, которые утверждают, что поддерживают данный стандарт, могут реализовывать собственные функции вне его, чтобы упростить доступ к данным.
Чтобы использовать JPA, нам нужна реализация.Помимо EclipseLink наиболее распространенными являются Hibernate, OpenJPA и DataNucleus.Все они поддерживают JPA 2.2.
Они реализуют спецификацию JPA, но также предоставляют дополнительные функциональные возможности для преодоления некоторых недостатков JPA.Эти функциональные возможности являются основным отличием между реализациями и делают код специфичным, т. Е. Используя, например, Hibernate, следуя изменениям кода, которые необходимо выполнить при изменении спецификации JPA.Только при использовании JPA мы можем переключаться между реализациями.Однако я никогда не видел ни одного проекта, который бы поменял продавца JPA.