Перейти к содержанию

Java Persistence API: различия между версиями

Материал из Википедии — свободной энциклопедии
[непроверенная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
Нет описания правки
archive.today внесён в блок-лист в викимедии
 
(не показаны 34 промежуточные версии 26 участников)
Строка 1: Строка 1:
'''Java Persistence API''' (''JPA'') — [[Интерфейс программирования приложений|API]], входящий с версии Java 5 в состав платформ [[Java Platform, Standard Edition|Java SE]] и [[Java Platform, Enterprise Edition|Java EE]], предоставляет возможность сохранять в удобном виде Java-объекты в базе данных<ref>{{cite web| title=Java Persistence API FAQ | url =http://java.sun.com/javaee/overview/faq/persistence.jsp | publisher=Sun Microsystems |archiveurl = http://web.archive.org/web/20080822023926/http://java.sun.com/javaee/overview/faq/persistence.jsp |archivedate = 2008-08-22|language=en}}</ref>.
'''Jakarta Persistence API''' (''JPA; ранее Java Persistence API'') — спецификация [[Интерфейс программирования приложений|API]] [[Java Platform, Enterprise Edition|Jakarta EE]], предоставляет возможность сохранять в удобном виде Java-объекты в базе данных<ref>{{cite web | title=Java Persistence API FAQ | url=http://www.oracle.com/technetwork/java/javaee/persistence-jsp-136066.html | publisher=Oracle Corporation | archive-url=https://web.archive.org/web/20080822023926/http://java.sun.com/javaee/overview/faq/persistence.jsp | archive-date=2008-08-22 | language=en | url-status=dead }}</ref>.


Существует несколько реализаций этого интерфейса, одна из самых популярных использует для этого [[Hibernate (библиотека)|Hibernate]].
Существует несколько реализаций этого интерфейса, одна из самых популярных использует для этого [[Hibernate (библиотека)|Hibernate]]. JPA реализует концепцию [[ORM]].


Поддержка сохранности данных предоставляемая ''JPA'' покрывает три области:
Поддержка сохранности данных, предоставляемая ''JPA'', покрывает области:
* непосредственно API заданный в пакете <code>javax.persistence</code>;
* непосредственно API, заданный в пакете <code>[http://docs.oracle.com/javaee/7/api/javax/persistence/package-summary.html javax.persistence]</code>;
* платформо-независимый объектно-ориентированный язык запросов [[Java Persistence Query Language]];
* платформо-независимый объектно-ориентированный язык запросов [[Java Persistence Query Language]];
* метаинформация, описывающая связи между объектами.
* [[Метаданные|метаинформация]], описывающая связи между объектами;
* Генерация [[DDL]] для сущностей.


== История ==
== История ==
Java Persistence API был определён в процессе работы экспертной группы над [[Java Community Process|JSR]] 220<ref>{{cite web|url=http://www.jcp.org/en/jsr/detail?id=220|title=JSR 220: Enterprise JavaBeansTM 3.0 |language=en}}</ref>. Первая версия JPA была выпущена 11 мая 2006 года. JPA 2.0 был описан экспертной группой в JSR 317<ref>{{cite web|url=http://www.jcp.org/en/jsr/detail?id=317|title=JSR 317: Java Persistence 2.0|language=en}}</ref>, спецификация была выпущена 10 декабря 2009 года.
Java Persistence API был определён в процессе работы экспертной группы над [[Java Community Process|JSR]] 220<ref>{{cite web|url=http://www.jcp.org/en/jsr/detail?id=220|title=JSR 220: Enterprise JavaBeansTM 3.0|language=en|archive-url=https://www.webcitation.org/6AXgDsJSz?url=http://www.jcp.org/en/jsr/detail?id=220|archive-date=2012-09-09|url-status=dead}}</ref>. Первая версия JPA была выпущена 11 мая 2006 года. JPA 2.0 был описан экспертной группой в JSR 317<ref>{{cite web|url=http://www.jcp.org/en/jsr/detail?id=317|title=JSR 317: Java Persistence 2.0|language=en|archive-url=https://www.webcitation.org/6AXgER76R?url=http://www.jcp.org/en/jsr/detail?id=317|archive-date=2012-09-09|url-status=dead}}</ref>, спецификация была выпущена 10 декабря 2009 года. Спецификация JPA 2.1 была выпущена 22 апреля 2013 года (для платформы Java EE 7 требуется версия JPA 2.1). Спецификация JPA 2.2 была выпущена летом 2017 года. Спецификация JPA 3.1, последняя версия, была выпущена весной 2022 года в рамках Jakarta EE 10.


== Entity ==
== Entity ==
Entity (Сущность) - [[POJO]] класс связанный с БД с помощью аннотации (<code>@Entity</code>) или через [[XML]]. Такой класс
Entity (Сущность) — [[POJO]]-класс, связанный с БД с помощью аннотации (<code>@Entity</code>) или через [[XML]]. К такому классу предъявляются следующие требования:
* Должен иметь пустой конструктор (<code>public</code> или <code>protected</code>)
должен:
* Иметь пустой конструктор (public или protected), могут быть и другие конструкторы
* Не может быть вложенным, интерфейсом или enum
* Не может быть вложенным, интерфейсом или enum
* Не может быть final и не должен содержать final поля/свойства
* Не может быть <code>final</code> и не может содержать <code>final</code>-полей/свойств
* Содержать хотя бы одно <code>@Id</code> поле
* Должен содержать хотя бы одно <code>@Id</code>-поле
может:
При этом entity может:
* Содержать непустые конструкторы
* Наследоватьс и наследваться
* Наследоваться и быть наследованным
* Содержать другие методы, и реализовывать интерфейсы
* Содержать другие методы и реализовывать интерфейсы



Entities могут быть связаны друг с другом (один-к-одному, один-ко-многим, многие-к-одному и многие-ко-многим)<ref>{{cite web|title=Package javax.persistence (javadoc)|url=http://docs.oracle.com/javaee/6/api/javax/persistence/package-summary.html|publisher=Oracle Corporation|language=en|archive-url=https://www.webcitation.org/6Cp7Shv0i?url=http://docs.oracle.com/javaee/6/api/javax/persistence/package-summary.html|archive-date=2012-12-11|url-status=dead}}</ref>.


== См. также ==
== См. также ==
Строка 31: Строка 32:


== Ссылки ==
== Ссылки ==
* {{cite web|url=http://glassfish.dev.java.net/javaee5/persistence/|title=GlassFish's Persistence page|language=en}}
* {{cite web|url=http://glassfish.dev.java.net/javaee5/persistence/|title=GlassFish's Persistence page|language=en|deadlink=unknown-host}}
* {{cite web|url=http://www.oracle.com/technetwork/articles/javaee/jpa-137156.html|title=The Java Persistence API - A Simpler Programming Model for Entity Persistence|language=en|publisher=Oracle}}
* {{cite web|url=http://www.oracle.com/technetwork/articles/javaee/jpa-137156.html|title=The Java Persistence API - A Simpler Programming Model for Entity Persistence|language=en|publisher=Oracle|archive-url=https://www.webcitation.org/67kNJfAHL?url=http://www.oracle.com/technetwork/articles/javaee/jpa-137156.html|archive-date=2012-05-18|url-status=dead}}


{{Java Persistence API}}
{{Java Persistence API}}
Строка 41: Строка 42:
[[Категория:Интерфейсы доступа к данным]]
[[Категория:Интерфейсы доступа к данным]]
[[Категория:Java Enterprise Edition]]
[[Категория:Java Enterprise Edition]]

[[ca:Java Persistence API]]
[[cs:Java Persistence API]]
[[de:Java Persistence API]]
[[en:Java Persistence API]]
[[es:Java Persistence API]]
[[fr:Java Persistence API]]
[[it:Java Persistence API]]
[[ja:Java Persistence API]]
[[ko:JPA]]
[[pl:Java Persistence API]]
[[pt:Java Persistence API]]
[[uk:Java Persistence API]]

Текущая версия от 15:23, 9 августа 2026

Jakarta Persistence API (JPA; ранее Java Persistence API) — спецификация API Jakarta EE, предоставляет возможность сохранять в удобном виде Java-объекты в базе данных[1].

Существует несколько реализаций этого интерфейса, одна из самых популярных использует для этого Hibernate. JPA реализует концепцию ORM.

Поддержка сохранности данных, предоставляемая JPA, покрывает области:

Java Persistence API был определён в процессе работы экспертной группы над JSR 220[2]. Первая версия JPA была выпущена 11 мая 2006 года. JPA 2.0 был описан экспертной группой в JSR 317[3], спецификация была выпущена 10 декабря 2009 года. Спецификация JPA 2.1 была выпущена 22 апреля 2013 года (для платформы Java EE 7 требуется версия JPA 2.1). Спецификация JPA 2.2 была выпущена летом 2017 года. Спецификация JPA 3.1, последняя версия, была выпущена весной 2022 года в рамках Jakarta EE 10.

Entity (Сущность) — POJO-класс, связанный с БД с помощью аннотации (@Entity) или через XML. К такому классу предъявляются следующие требования:

  • Должен иметь пустой конструктор (public или protected)
  • Не может быть вложенным, интерфейсом или enum
  • Не может быть final и не может содержать final-полей/свойств
  • Должен содержать хотя бы одно @Id-поле

При этом entity может:

  • Содержать непустые конструкторы
  • Наследоваться и быть наследованным
  • Содержать другие методы и реализовывать интерфейсы

Entities могут быть связаны друг с другом (один-к-одному, один-ко-многим, многие-к-одному и многие-ко-многим)[4].

Примечания

[править | править код]
  1. ↑ Java Persistence API FAQ (англ.). Oracle Corporation. Архивировано из оригинала 22 августа 2008 года.
  2. ↑ JSR 220: Enterprise JavaBeansTM 3.0 (англ.). Архивировано из оригинала 9 сентября 2012 года.
  3. ↑ JSR 317: Java Persistence 2.0 (англ.). Архивировано из оригинала 9 сентября 2012 года.
  4. ↑ Package javax.persistence (javadoc) (англ.). Oracle Corporation. Архивировано из оригинала 11 декабря 2012 года.