Jump to content

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

(Перенаправлено из Java Persistence API )

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, объявленными с использованием аннотаций (операторы импорта и методы установки/получания опущены для простоты).

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

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

Язык запросов

[ редактировать ]

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

Мотивация

[ редактировать ]

До появления спецификации EJB 3.0 многие корпоративные Java-разработчики использовали облегченные постоянные объекты, предоставляемые либо средами сохранения (такими как Hibernate ), либо объектами доступа к данным (DAO), вместо использования объектных компонентов . Это связано с тем, что объектные компоненты в предыдущих спецификациях EJB требовали очень сложного кода и требовали большого объема ресурсов, и их можно было использовать только на серверах приложений Java EE из-за взаимосвязей и зависимостей в исходном коде между компонентами и объектами 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 и спецификации, а не в JSR/спецификации EJB.

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

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

[ редактировать ]

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

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

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

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

[ редактировать ]

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

Весенние данные JPA

[ редактировать ]

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

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

[ редактировать ]

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

Основные включенные функции:

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

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

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

Основные включенные функции:

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

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

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

Основные включенные функции:

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

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

Джакарта Персистенция 3.0

[ редактировать ]

JPA был переименован в Jakarta Persistence в 2019 году, а версия 3.0 была выпущена в 2020 году. Это включало переименование пакетов и свойств с 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. ^ Jump up to: а б с «Джакартское упорство 3.1» . Джакарта.ee . Проверено 27 июля 2022 г.
  2. ^ «Урок по JavaEE 6» . Оракул.
  3. ^ «Урок по JavaEE 7» . Оракул.
  4. ^ Hibernate EntityManager: среды Java SE
    Hibernate EntityManager: получение EntityManager в среде Java SE
  5. ^ «Джакартское упорство» . Джакарта.ee . Проверено 05 октября 2021 г.
  6. ^ «Члены JSR 220» .
  7. ^ Баррето, Чарльтон. «SDO и JPA» . Цифровая прогулка . Архивировано из оригинала 13 августа 2011 года . Проверено 5 мая 2011 г.
  8. ^ Эдвардс, Майк. «SDO и архитектура сохранения Java (JPA)» . Откройте СОА . osoa.org . Проверено 5 мая 2011 г.
  9. ^ «hibernate.org — Сохранение Java с помощью Hibernate» . Джей Босс . Проверено 17 ноября 2008 г. Hibernate реализует объектный/реляционный JavaAPI Java Persistence и интерфейсы управления постоянством.
  10. ^ Сохранение Java в Hibernate . Публикации Мэннинга. 8 ноября 2015 г. ISBN  9781617290459 . Проверено 8 декабря 2013 г. Гэвин Кинг — основатель проекта Hibernate
  11. ^ «JBoss.com — Лидерство отрасли» . Джей Босс . Проверено 17 ноября 2008 г. JSR 220, Комитет по спецификациям EJB 3.0, Гэвин Кинг, Билл Берк, Марк Флери
  12. ^ «Часто задаваемые вопросы по Java Persistence API» . Сан Микросистемс. Архивировано из оригинала 22 августа 2008 г. Проверено 1 июля 2010 г. Java Persistence API опирается на лучшие идеи таких технологий сохранения, как Hibernate, TopLink и JDO.
  13. ^ Дейнум и др. 2014
  14. ^ «Spring Data — Сайт проекта» . Ключевой . Проверено 26 февраля 2018 г.
  15. ^ «Пакет функций IBM WebSphere Application Server V7 для приложений OSGi и API сохранения Java» . Скачать веб-сайт . ИБМ. 27 апреля 2010 г. Проверено 8 декабря 2013 г.
  16. ^ «Двухэтапная загрузка Versant JPA» . Скачать веб-сайт . Актиан . Проверено 8 декабря 2013 г.
  17. ^ «Что нового в Jakarta Persistence 3.1» . Фонд Эклипс.
  18. ^ «Результаты TCK EclipseLink» . Фонд Эклипс . Проверено 27 июля 2022 г.
  19. ^ «Серия Hibernate ORM 6.0» . hibernate.org . Проверено 27 июля 2022 г.

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

[ редактировать ]
  • Дейнум, Мартен; Рубио, Дэниел; Лонг, Джош; Мак, Гэри (1 сентября 2014 г.). Весенние рецепты: подход к решению проблем (второе изд.). Апресс . ISBN  978-1-4302-2499-0 .
[ редактировать ]

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

[ редактировать ]

Учебники

[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: a1fd4d9e4aeabb545245be5b4229c992__1721104680
URL1:https://arc.ask3.ru/arc/aa/a1/92/a1fd4d9e4aeabb545245be5b4229c992.html
Заголовок, (Title) документа по адресу, URL1:
Jakarta Persistence - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)