Джакарта Стойкость - Jakarta Persistence

Джакарта Стойкость (JPA; ранее Java Persistence API) является Джакарта EE интерфейс прикладного программирования спецификация, описывающая управление реляционные данные на предприятии Ява Приложения.

Упорство в этом контексте охватывает три области:

В эталонная реализация для JPA EclipseLink.

История

Fil006 как часть Процесс сообщества Java 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])

Сущности

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

Язык запроса

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

Мотивация

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

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

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

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

API объекта служебных данных

Дизайнеры[4] API Java Persistence, предназначенного для обеспечения реляционной устойчивости, при этом многие ключевые области взяты из объектно-реляционное отображение инструменты, такие как Спящий режим и 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 управляется через ОАЗИС.

Спящий режим

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

Spring Data JPA[11]

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

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

JPA 2.0

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

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

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

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

JPA 2.1

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

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

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

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

JPA 2.2

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

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

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

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

Будущая работа

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

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

инструменты

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

Рекомендации

  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. Получено 2008-11-17. Hibernate реализует объект Java Persistence object / relational javaAPI и интерфейсы управления сохранением.
  8. ^ Сохранение Java с Hibernate. Публикации Мэннинга. ISBN  9781617290459. Получено 8 декабря 2013. Гэвин Кинг - основатель проекта Hibernate.
  9. ^ "JBoss.com - лидерство в отрасли". JBoss. Получено 2008-11-17. JSR 220, Комитет по спецификациям EJB 3.0, Гэвин Кинг, Билл Берк, Марк Флери
  10. ^ «Часто задаваемые вопросы по Java Persistence API». Sun Microsystems. Архивировано из оригинал на 2008-08-22. Получено 2010-07-01. Java Persistence API использует лучшие идеи таких технологий сохранения состояния, как Hibernate, TopLink и JDO.
  11. ^ «Spring Data - сайт проекта». Основной. Получено 2018-02-26.
  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. Получено 2016-11-08.
  15. ^ Java (2015-10-27), JavaOne LIVE - вторник, миссия, получено 2016-11-08
  16. ^ Юнгманн, Лукас (10 октября 2015 г.). «Что нового в Java Persistence API (JSR 338) [CON7631]». Каталог сессий JavaOne 2015. Архивировано из оригинал 9 ноября 2016 г.. Получено 2016-11-08 - через rainfocus.com.

внешняя ссылка

Главная информация

Учебники