stringtranslate.com

Джакарта Настойчивость

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

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

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

История

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

Сущности

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

Пример

Пример класса сущности с метаданными ORM, объявленными с использованием аннотаций (операторы импорта и сеттеры/геттеры опущены для простоты).

@Entity public class Person { @Id private long id ; private String firstName ; private String lastName ; private int age ; }                

Аннотация @Entityобъявляет, что класс представляет сущность. @Idобъявляет атрибут, который действует как первичный ключ сущности. Дополнительные аннотации могут использоваться для объявления дополнительных метаданных (например, изменение имени таблицы по умолчанию в @Tableаннотации) или для создания ассоциаций между сущностями.

Язык запроса

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

Мотивация

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

Связанные технологии

Фасоль предприятия

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

Java Persistence API заменяет решение по сохранению данных EJB 2.0 CMP (Container-Managed Persistence).

API объектов данных Java

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

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

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

API объекта сервисных данных

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

Спящий режим

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

Данные Spring JPA

Spring Data JPA — это реализация абстракции репозитория, которая является ключевым строительным блоком доменно-ориентированного проектирования на основе фреймворка приложений Java Spring . Он прозрачно поддерживает все доступные реализации JPA и поддерживает операции CRUD , а также удобное выполнение запросов к базе данных. [13] : 47  [14]

История версий

JPA2.0

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

Основные характеристики:

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

JPA2.1

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

Основные характеристики:

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

JPA2.2

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

Основные характеристики:

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

Джакарта Устойчивость 3.0

В 2019 году JPA был переименован в Jakarta Persistence, а в 2020 году была выпущена версия 3.0. Это включало переименование пакетов и свойств с javax.persistence на jakarta.persistence.

Поставщики, поддерживающие Jakarta Persistence 3.0:

Джакарта Устойчивость 3.1

Версия 3.1 была выпущена в 2022 году. [1] Она является частью Jakarta EE 10 и, таким образом, для ее работы требуется как минимум Java 11. Она добавляет улучшенную обработку UUID, различные новые функции JPQL для математики и обработки даты/времени, а также другие небольшие изменения. [17]

Поставщики, поддерживающие Jakarta Persistence 3.1:

Смотрите также

Ссылки

  1. ^ abc "Jakarta Persistence 3.1". jakarta.ee . Получено 2022-07-27 .
  2. ^ "Учебник JavaEE 6". Oracle.
  3. ^ "Учебник JavaEE 7". Oracle.
  4. ^ Hibernate EntityManager: среды Java SE
    Hibernate EntityManager: получение EntityManager в среде Java SE
  5. ^ "Jakarta Persistence". jakarta.ee . Получено 2021-10-05 .
  6. ^ «Участники JSR 220».
  7. ^ Баррето, Чарльтон. "SDO и JPA". Digital Walkabout . Архивировано из оригинала 13 августа 2011 года . Получено 5 мая 2011 года .
  8. ^ Эдвардс, Майк. "SDO и Java Persistence Architecture (JPA)". Open SOA . osoa.org . Получено 5 мая 2011 г. .
  9. ^ "hibernate.org - Java Persistence with Hibernate". JBoss . Получено 17.11.2008 . Hibernate реализует Java Persistence object/relational javaAPI и интерфейсы управления сохранением
  10. ^ Java Persistence with Hibernate. Manning Publications. 8 ноября 2015 г. ISBN 9781617290459. Получено 8 декабря 2013 г. . Гэвин Кинг — основатель проекта Hibernate
  11. ^ "JBoss.com - Лидерство в отрасли". JBoss . Получено 17.11.2008 . JSR 220, Комитет по спецификациям EJB 3.0, Гэвин Кинг, Билл Берк, Марк Флери
  12. ^ "Java Persistence API FAQ". Sun Microsystems. Архивировано из оригинала 2008-08-22 . Получено 2010-07-01 . Java Persistence API черпает лучшие идеи из технологий сохранения, таких как Hibernate, TopLink и JDO.
  13. ^ Дейнум и др. 2014.
  14. ^ "Spring Data - веб-сайт проекта". Pivotal . Получено 2018-02-26 .
  15. ^ "IBM WebSphere Application Server V7 Feature Pack for OSGi Applications and Java Persistence API". Загрузить веб-сайт . IBM. 27 апреля 2010 г. Получено 8 декабря 2013 г.
  16. ^ "Versant JPA 2-Step Download". Загрузить веб-сайт . Actian . Получено 8 декабря 2013 г.
  17. ^ «Что нового в Jakarta Persistence 3.1». Eclipse Foundation.
  18. ^ "Результаты TCK EclipseLink". Eclipse Foundation . Получено 2022-07-27 .
  19. ^ "Hibernate ORM 6.0 series". hibernate.org . Получено 2022-07-27 .

Дальнейшее чтение

Внешние ссылки

Общая информация

Учебники