Из Википедии, бесплатной энциклопедии
  (Перенаправлено из Java Persistence API )
Перейти к навигации Перейти к поиску

Jakarta Persistence ( JPA ; ранее Java Persistence API) - это спецификация интерфейса программирования приложений Jakarta EE , описывающая управление реляционными данными в корпоративных приложениях Java .

Настойчивость в этом контексте охватывает три области:

Эталонная реализация для JPA является EclipseLink .

История [ править ]

Окончательной датой выпуска спецификации JPA 1.0 было 11 мая 2006 г. как части Java Community Process JSR 220. Спецификация JPA 2.0 была выпущена 10 декабря 2009 г. (для платформы Java EE 6 требуется JPA 2.0. [1] ) Спецификация JPA 2.1 была выпущен 22 апреля 2013 г. (для платформы Java EE 7 требуется JPA 2.1. [2] ). Спецификация JPA 2.2 (второстепенный выпуск) была выпущена летом 2017 года.

Сущности [ править ]

Сущность постоянства - это облегченный класс Java , состояние которого обычно сохраняется в таблице в реляционной базе данных . Экземпляры такой сущности соответствуют отдельным строкам в таблице. Сущности обычно имеют отношения с другими сущностями, и эти отношения выражаются через объектные / реляционные метаданные. Объектные / реляционные метаданные могут быть указаны непосредственно в файле класса сущности с помощью аннотаций или в отдельном файле дескриптора XML, распространяемом вместе с приложением.

Язык запроса [ править ]

Jakarta Постоянство Query Language (JPQL, ранее Java Persistence Query Language) делает запросы к сущностям , хранящимся в реляционной базе данных. Запросы напоминают запросы SQL по синтаксису, но работают с объектами сущностей, а не напрямую с таблицами базы данных.

Мотивация [ править ]

До введения спецификации EJB 3.0 многие корпоративные Java-разработчики использовали облегченные постоянные объекты, предоставляемые либо фреймворками сохранения (например, Hibernate ), либо объектами доступа к данным вместо сущностных компонентов . Это связано с тем, что в предыдущих спецификациях EJB объектные компоненты требовали слишком большого количества сложного кода и значительного объема ресурсов, и их можно было использовать только на серверах приложений Java EE из-за взаимосвязей и зависимостей в исходном коде между bean-компонентами и объектами DAO или фреймворком сохраняемости. . Таким образом, многие из функций, изначально представленных в сторонних фреймворках сохраняемости, были включены в Java Persistence API, а с 2006 года такие проекты, какHibernate (версия 3.2) и TopLink Essentials сами стали реализациями спецификации Java Persistence API.

Связанные технологии [ править ]

Enterprise Beans [ править ]

Спецификация EJB 3.0 (сама часть платформы Java EE 5) включала определение Java Persistence API. Однако конечным пользователям не нужен контейнер EJB или сервер приложений Java EE для запуска приложений, использующих этот API сохраняемости. [3] Будущие версии Java Persistence API будут определены в отдельном JSR и спецификации, а не в EJB JSR / спецификации.

API сохранения состояния Java заменяет решение сохранения состояния EJB 2.0 CMP (сохраняемость, управляемая контейнером).

API объектов данных Java [ править ]

Java Persistence API был разработан частично унифицировать Java Data Objects API , и EJB 2.0 Container Managed Persistence (CMP) API . По состоянию на 2009 год большинство продуктов, поддерживающих каждый из этих API, поддерживают Java Persistence API.

Java Persistence API определяет постоянство только для систем управления реляционными базами данных . То есть JPA фокусируется на объектно-реляционном отображении (ORM) (обратите внимание, что есть поставщики JPA, которые поддерживают другие модели баз данных, помимо реляционной базы данных, но это выходит за рамки того, для чего был разработан JPA). Обратитесь к введению в раздел 1 спецификации JPA 2 для разъяснения роли JPA, в котором очень четко говорится: «Техническая цель этой работы - предоставить средство объектно-реляционного сопоставления для разработчика приложений Java, использующего модель предметной области Java для управления реляционным база данных."

Java Data Objects спецификация поддерживает ORM, а также устойчивость к другим типам моделей баз данных, например , баз данных , файлов плоских и NoSQL баз данных, включая базы данных документов , баз данных графиков , а также практически любого другого мыслимого датасторе [ править ] .

API объекта служебных данных [ править ]

Разработчики [4] Java Persistence API стремились обеспечить реляционную персистентность, при этом многие ключевые области были взяты из инструментов объектно-реляционного сопоставления , таких как Hibernate и TopLink . Java Persistence API улучшил и заменил EJB 2.0, о чем свидетельствует его включение в EJB 3.0. API объектов служебных данных (SDO) (JSR 235) имеет совсем другую цель, чем Java Persistence API, и считается [5] [6] дополнительным. SDO API разработан для сервис-ориентированных архитектур , нескольких форматов данных, а не только реляционных данных, и нескольких языков программирования. Процесс сообщества Javaуправляет Java-версией SDO API; в C ++ версия SDO API управляется с помощью OASIS .

Гибернация [ править ]

Hibernate предоставляет платформу объектно-реляционного сопоставления с открытым исходным кодом для Java . Версии 3.2 и более поздние предоставляют реализацию Java Persistence API. [7] Гэвин Кинг основал проект Hibernate. [8] Он представлял JBoss на JSR 220, [9] в JCP группу экспертов поручено разработать JPA. Это привело к постоянным спорам и предположениям о связи между JPA и Hibernate. Sun Microsystems заявила [10], что идеи исходили из нескольких фреймворков, включая Hibernate и Java Data Objects .

Spring Data JPA [11] [ править ]

Реализация абстракции репозитория, которая является ключевым строительным блоком Domain-Driven Design, основанного на платформе Java-приложений Spring . Прозрачно поддерживает все доступные реализации JPA и поддерживает операции CRUD, а также удобное выполнение запросов к базе данных.

История версий [ править ]

JPA 2.0 [ править ]

Разработка новой версии JPA 2.0 была начата в июле 2007 года в процессе сообщества Java под названием JSR 317. JPA 2.0 была утверждена в качестве окончательной 10 декабря 2009 года. Основное внимание в JPA 2.0 было уделено функциям, которые присутствовали в некоторых из популярных Поставщики ORM, но не смогли получить консенсусное одобрение для JPA 1.0.

Включены следующие основные функции:

  • Расширенная функциональность объектно-реляционного сопоставления
    • поддержка коллекций встроенных объектов, связанных в ORM отношениями " многие к одному"
    • упорядоченные списки
    • комбинации типов доступа
  • API запроса критериев
  • стандартизация подсказок SQL
  • стандартизация дополнительных метаданных для поддержки генерации DDL
  • поддержка проверки
  • Поддержка кэша общих объектов.

Производители, поддерживающие JPA 2.0:

  • Batoo JPA
  • DataNucleus (ранее JPOX)
  • EclipseLink (ранее Oracle TopLink )
  • IBM , для WebSphere Application Server [12]
  • JBoss с Hibernate
  • Кундера
  • ObjectDB
  • OpenJPA
  • OrientDB от Orient Technologies
  • Versant Corporation JPA (не реляционная, объектная база данных) [13]

JPA 2.1 [ править ]

Разработка новой версии JPA 2.1 была начата в июле 2011 года под названием JSR 338. JPA 2.1 была утверждена как окончательная 22 мая 2013 года.

Включены следующие основные функции:

  • Конвертеры - позволяют настраивать преобразование кода между типами базы данных и объектами.
  • Обновление / удаление критериев - разрешает массовые обновления и удаления через API критериев.
  • Графики сущностей - разрешить частичную или заданную выборку или объединение объектов.
  • Улучшения JPQL / Criteria - арифметические подзапросы, общие функции базы данных, предложение join ON, опция TREAT.
  • Генерация схемы
  • Хранимые процедуры - позволяет определять запросы для хранимых процедур базы данных.

Поставщики, поддерживающие JPA 2.1

  • DataNucleus
  • EclipseLink
  • Спящий режим
  • OpenJPA (с версии 2.2.0)

JPA 2.2 [ править ]

Разработка поддерживаемого релиза под названием JPA 2.2 была начата в 2017 году в соответствии с JSR 338. Обзор сопровождения был утвержден 19 июня 2017 года.

Включены следующие основные функции:

  • Добавьте @Repeatable ко всем соответствующим аннотациям
  • Разрешить использование всех аннотаций JPA в метааннотациях.
  • Добавить возможность потоковой передачи результата запроса
  • Разрешить AttributeConverters быть CDI-вставляемым
  • Поддержка типов даты и времени Java 8

Поставщики, поддерживающие JPA 2.2

  • DataNucleus (с версии 5.1)
  • EclipseLink (начиная с версии 2.7)
  • Hibernate (с версии 5.3)
  • OpenJPA (с версии 3.0.0)

Будущая работа [ править ]

Информация о будущих спецификациях JPA доступна здесь:

  • Списки рассылки спецификации JPA
  • Спецификация JPA на GitHub

В ноябре 2015 года Линда ДеМишель объявила в рассылке пользователей javaee-spec, что Лукас Юнгманн возглавил спецификацию. В заявлении Линды также говорилось: «[мы] планируем провести MR для JPA 2.2 в сроки Java EE 8». [14] [15] [16]

Инструменты [ править ]

  • NetBeans Jeddict
  • Затмение JPA (Дали)

См. Также [ править ]

  • .NET Persistence API (NPA)
  • JDBC
  • MyBatis
  • OpenXava
  • pureQuery
  • Сервер приложений SAP NetWeaver
  • XQJ

Ссылки [ править ]

  1. ^ «Учебник по JavaEE 6» . Oracle.
  2. ^ «Учебник по JavaEE 7» . Oracle.
  3. ^ Hibernate EntityManager: среды Java SE
    Hibernate EntityManager: получение EntityManager в среде Java SE
  4. ^ "Члены JSR 220" .
  5. ^ Баррето, Чарльтон. «SDO и JPA» . Цифровая прогулка . Архивировано из оригинального 13 августа 2011 года . Проверено 5 мая 2011 года .
  6. ^ Эдвардс, Майк. «SDO и архитектура сохраняемости Java (JPA)» . Откройте SOA . osoa.org . Проверено 5 мая 2011 года .
  7. ^ "hibernate.org - Сохранение Java с Hibernate" . JBoss . Проверено 17 ноября 2008 . Hibernate реализует объект Java Persistence object / relational javaAPI и интерфейсы управления сохранением.
  8. ^ Сохранение Java с Hibernate . Публикации Мэннинга. ISBN 9781617290459. Проверено 8 декабря 2013 года . Гэвин Кинг - основатель проекта Hibernate.
  9. ^ «JBoss.com - Лидерство в отрасли» . JBoss . Проверено 17 ноября 2008 . JSR 220, Комитет по спецификациям EJB 3.0, Гэвин Кинг, Билл Берк, Марк Флери
  10. ^ «Часто задаваемые вопросы по Java Persistence API» . Sun Microsystems. Архивировано из оригинала на 2008-08-22 . Проверено 1 июля 2010 . API Java Persistence опирается на лучшие идеи таких технологий сохранения состояния, как Hibernate, TopLink и JDO.
  11. ^ «Spring Data - сайт проекта» . Pivotal . Проверено 26 февраля 2018 .
  12. ^ "Пакет компонентов IBM WebSphere Application Server V7 для приложений OSGi и Java Persistence API" . Скачать веб-сайт . IBM. 27 апреля 2010 . Проверено 8 декабря 2013 года .
  13. ^ «Двухэтапная загрузка Versant JPA» . Скачать веб-сайт . Actian . Проверено 8 декабря 2013 года .
  14. ^ "Спецификация платформы Java EE: [email protected]: Архив - проект Kenai" . java.net . Проверено 8 ноября 2016 .
  15. ^ Java ( 27 октября 2015 г. ), JavaOne LIVE - вторник, миссия , получено 8 ноября 2016 г.
  16. ^ Юнгманн, Lukas (10 октября 2015). «Что нового в Java Persistence API (JSR 338) [CON7631]» . Каталог сессий JavaOne 2015 . Архивировано из оригинала 9 ноября 2016 года . Проверено 8 ноября 2016 г. - через rainfocus.com.

Внешние ссылки [ править ]

Общая информация [ править ]

  • Официальный веб-сайт
  • Документация для окончательной версии спецификации EJB3 (называемой JSR220)
  • Страница "Устойчивость" GlassFish
  • Страница сохраняемости JCP

Учебники [ править ]

  • Java EE 6 Persistence API Javadoc
  • Руководство по Java EE 6 Persistence API
  • Java EE 7 Persistence API Javadoc
  • Руководство по Java EE 7 Persistence API
  • Учебное пособие по JPA от Прасада Харкара
  • Учебник по JPA от Java Code Geeks
  • Учебник по JPA с использованием OpenJPA в качестве реализации
  • Сохраняемость в учебнике по Java EE 5