jpa_nus.pdf

Java EE
Persistence
(JPA)
Беркунский Е.Ю., кафедра ИУСТ, НУК
eugeny.berkunsky@gmail.com
http://www.berkut.mk.ua
Содержание
• Что такое и Почему используем O/R Mapper (ORM)?
• Что нам дает JPA?
• O/R Отображения
• Что такое Entity?
• Программная модель JPA
• EntityManager и операции управления Entity
• Отсоединенные объекты
• Жизненный цикл Entity
• Persistence контекст и EntityManager
Почему Object/Relational
Mapping?
• Одна из главных частей любого энтерпрайз
приложения – уровень persistence
– Доступ и управление перманентными данными,
обычно с применением реляционной БД
• ORM берет на себя “превращение” таблицы в
объект
– Данные живут в реляционной БД, т.е. в таблицах
(в строчках и столбцах)
– Мы же хотим работать с объектами, а не с
колонками и столбцами
Что нам дает JPA?
• Упрощение модели persistence
– Использование значений по умолчанию вместо
сложных настроек
– Отказ от конфигурационных файлов
• Предоставление легковесной модели
persistence
– Увеличение быстродействия
• Предоставление возможности тестировать
вне контейнера
– TDD
• Единый API для Java SE и Java EE
O/R Отображения
• Обширный набор аннотаций для описания
отображений (mapping)
– Связи
– Объединения
– Таблицы и колонки БД
– Генераторы последовательностей для БД
– Многое другое
• Возможно использовать отдельный
конфигурационный файл для описания
отображений (mapping)
Пример модели
Пример отображения
Что такое Entity?
• Простой Java класс (Plain Old Java Object POJO)
- Создается как обычный Java класс – при
помощи new
- Нет необходимости реализовывать
интерфейсы в отличии от EJB 2.1 entity beans
• Может содержать перманентные и не
перманентные данные
- Не перманентные данные помечаются
transient или @Transient
• Может расширять другие entity и не-entity
классы
Идентификация Entity
• Любой Entity имеет перманентный
идентификатор
- Он отображается в первичный ключ в таблице
• Идентификатор — примитивный тип
- @Id—одиночное поле/свойство в Entity классе
- @GeneratedValue—значение может генерироватся
автоматически, используя различные стратегии
(SEQUENCE, TABLE, IDENTITY, AUTO)
• Идентификатор – пользовательский класс
- @EmbeddedId—одиночное поле/свойство в Entity
классе
- @IdClass—соответствует множеству полей в Entity
классе
Отображение отношений
• Аннотации для описания отношений
между Entity
– @OneToOne
– @OneToMany
– @ManyToOne
– @ManyToMany
EntityManager
• Управляет жизненным циклом Entity объектов
– persist() - помещает объект в БД
– remove() - удаляет объект из БД
– merge() - синхронизирует с БД состояние
отсоединенного объекта
– refresh() - обновляет из БД состояние объекта
Операция Persist
Операции Find и Remove
Операция Merge
Жизненный цикл Entity
Persistence контекст и
EntityManager
• Persistence контекст
– Множество управляемых Entity объектов во
время работы приложения
– “Объект со статусом управляемый” означает
что он принадлежит определенному persistent
контексту
• EntityManager
– Выполняет операции связанные с жизненным
циклом Entity объекта – управляет persistent
контекстом
Persistence контекст и
EntityManager
• Persistence контекст напрямую не доступен
разработчику напрямую
– Программного доступа к Persistence контекст
нет — в этом нет необходимости
– Доступ Persistence контекст осуществляется
через EntityManager
• Тип EntityManager определяет как будет
persistence контекст будет создаваться и удаляться
Типы EntityManager
• Управляемый контейнером EntityManager
(Java EE)
• Управляемый приложением EntityManager
(Java SE)
Как создать EntityManager
• Разные типы EntityManager создаются по
разному
– Управляемый контейнером EntityManager
(Java EE) создается контейнером и становится
доступным для приложения через механизм
инъекций
Используется аннотация @PersistenceContext
– Управляемый приложением EntityManager
(Java SE) создается и закрывается
(уничтожается) приложением.
Persistence Unit
• Все Entity объекты управляемые определенным
EntityManager определяются при помощи
Persistence Unit
• persistence.xml определяет один или несколько
Persistence Unit
Persistence Unit
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence
http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
<persistence-unit name="WebAppPU" transaction-type="JTA">
<jta-data-source>jdbc/demojpa</jta-data-source>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="javax.persistence.schema-generation.database.action"
value="create"/>
</properties>
</persistence-unit>
</persistence>
Q & A
Java EE
Persistence
(JPA)
Беркунский Е.Ю., кафедра ИУСТ, НУК
eugeny.berkunsky@gmail.com
http://www.berkut.mk.ua
1 sur 23

Recommandé

Java Persistence API (JPA) Basics par
Java Persistence API (JPA) BasicsJava Persistence API (JPA) Basics
Java Persistence API (JPA) BasicsSSA KPI
1.6K vues20 diapositives
Введение в hibernate par
Введение в hibernateВведение в hibernate
Введение в hibernateUnguryan Vitaliy
1.8K vues46 diapositives
Как пройти собеседование и получить первую работу на Swift par
Как пройти собеседование и получить первую работу на SwiftКак пройти собеседование и получить первую работу на Swift
Как пройти собеседование и получить первую работу на SwiftAnton Loginov
2.1K vues19 diapositives
введение в объектно ориентированный анализ par
введение в объектно ориентированный анализвведение в объектно ориентированный анализ
введение в объектно ориентированный анализMaksim Nikitin
169 vues40 diapositives
Сущности в Drupal 7 par
Сущности в Drupal 7Сущности в Drupal 7
Сущности в Drupal 7Itech4Web
1.8K vues19 diapositives
Java. Lecture 02. Classes and Objects par
Java. Lecture 02. Classes and ObjectsJava. Lecture 02. Classes and Objects
Java. Lecture 02. Classes and Objectscolriot
1.2K vues18 diapositives

Contenu connexe

Similaire à jpa_nus.pdf

Java core-lect6-part3-annotation.ppt par
Java core-lect6-part3-annotation.pptJava core-lect6-part3-annotation.ppt
Java core-lect6-part3-annotation.pptAnton Moiseenko
271 vues19 diapositives
C# Web. Занятие 04. par
C# Web. Занятие 04.C# Web. Занятие 04.
C# Web. Занятие 04.Igor Shkulipa
798 vues38 diapositives
разработка бизнес приложений (7) par
разработка бизнес приложений (7)разработка бизнес приложений (7)
разработка бизнес приложений (7)Alexander Gornik
475 vues51 diapositives
Майстер-клас "Автоматизоване тестування. З чого почати? par
Майстер-клас "Автоматизоване тестування. З чого почати?Майстер-клас "Автоматизоване тестування. З чого почати?
Майстер-клас "Автоматизоване тестування. З чого почати?DataArt
590 vues21 diapositives
React.js – intro par
React.js – introReact.js – intro
React.js – introAndrew Makarow
970 vues23 diapositives
Средства разработки web приложений (Web frameworks) par
Средства разработки web приложений
(Web frameworks)Средства разработки web приложений
(Web frameworks)
Средства разработки web приложений (Web frameworks)Fedor Malyshkin
1K vues53 diapositives

Similaire à jpa_nus.pdf(9)

разработка бизнес приложений (7) par Alexander Gornik
разработка бизнес приложений (7)разработка бизнес приложений (7)
разработка бизнес приложений (7)
Alexander Gornik475 vues
Майстер-клас "Автоматизоване тестування. З чого почати? par DataArt
Майстер-клас "Автоматизоване тестування. З чого почати?Майстер-клас "Автоматизоване тестування. З чого почати?
Майстер-клас "Автоматизоване тестування. З чого почати?
DataArt590 vues
Средства разработки web приложений (Web frameworks) par Fedor Malyshkin
Средства разработки web приложений
(Web frameworks)Средства разработки web приложений
(Web frameworks)
Средства разработки web приложений (Web frameworks)
Fedor Malyshkin1K vues
0. odant intro par Odant
0. odant intro0. odant intro
0. odant intro
Odant997 vues
Msu.Center.Lectures.J02 Classes And Objects par olegol
Msu.Center.Lectures.J02 Classes And ObjectsMsu.Center.Lectures.J02 Classes And Objects
Msu.Center.Lectures.J02 Classes And Objects
olegol422 vues
iOS 7. Новые концепции и новые средства par Any Void
iOS 7. Новые концепции и новые средстваiOS 7. Новые концепции и новые средства
iOS 7. Новые концепции и новые средства
Any Void1.8K vues

Plus de ssuser0562f1

0808.pdf par
0808.pdf0808.pdf
0808.pdfssuser0562f1
2 vues53 diapositives
servlets1.pdf par
servlets1.pdfservlets1.pdf
servlets1.pdfssuser0562f1
4 vues20 diapositives
servlets.pdf par
servlets.pdfservlets.pdf
servlets.pdfssuser0562f1
1 vue20 diapositives
Курсовая (1).pdf par
Курсовая (1).pdfКурсовая (1).pdf
Курсовая (1).pdfssuser0562f1
13 vues51 diapositives
springdatajpatwjug-120527215242-phpapp02.pdf par
springdatajpatwjug-120527215242-phpapp02.pdfspringdatajpatwjug-120527215242-phpapp02.pdf
springdatajpatwjug-120527215242-phpapp02.pdfssuser0562f1
13 vues33 diapositives
springdatajpa-up.pdf par
springdatajpa-up.pdfspringdatajpa-up.pdf
springdatajpa-up.pdfssuser0562f1
4 vues32 diapositives

jpa_nus.pdf

  • 1. Java EE Persistence (JPA) Беркунский Е.Ю., кафедра ИУСТ, НУК eugeny.berkunsky@gmail.com http://www.berkut.mk.ua
  • 2. Содержание • Что такое и Почему используем O/R Mapper (ORM)? • Что нам дает JPA? • O/R Отображения • Что такое Entity? • Программная модель JPA • EntityManager и операции управления Entity • Отсоединенные объекты • Жизненный цикл Entity • Persistence контекст и EntityManager
  • 3. Почему Object/Relational Mapping? • Одна из главных частей любого энтерпрайз приложения – уровень persistence – Доступ и управление перманентными данными, обычно с применением реляционной БД • ORM берет на себя “превращение” таблицы в объект – Данные живут в реляционной БД, т.е. в таблицах (в строчках и столбцах) – Мы же хотим работать с объектами, а не с колонками и столбцами
  • 4. Что нам дает JPA? • Упрощение модели persistence – Использование значений по умолчанию вместо сложных настроек – Отказ от конфигурационных файлов • Предоставление легковесной модели persistence – Увеличение быстродействия • Предоставление возможности тестировать вне контейнера – TDD • Единый API для Java SE и Java EE
  • 5. O/R Отображения • Обширный набор аннотаций для описания отображений (mapping) – Связи – Объединения – Таблицы и колонки БД – Генераторы последовательностей для БД – Многое другое • Возможно использовать отдельный конфигурационный файл для описания отображений (mapping)
  • 8. Что такое Entity? • Простой Java класс (Plain Old Java Object POJO) - Создается как обычный Java класс – при помощи new - Нет необходимости реализовывать интерфейсы в отличии от EJB 2.1 entity beans • Может содержать перманентные и не перманентные данные - Не перманентные данные помечаются transient или @Transient • Может расширять другие entity и не-entity классы
  • 9. Идентификация Entity • Любой Entity имеет перманентный идентификатор - Он отображается в первичный ключ в таблице • Идентификатор — примитивный тип - @Id—одиночное поле/свойство в Entity классе - @GeneratedValue—значение может генерироватся автоматически, используя различные стратегии (SEQUENCE, TABLE, IDENTITY, AUTO) • Идентификатор – пользовательский класс - @EmbeddedId—одиночное поле/свойство в Entity классе - @IdClass—соответствует множеству полей в Entity классе
  • 10. Отображение отношений • Аннотации для описания отношений между Entity – @OneToOne – @OneToMany – @ManyToOne – @ManyToMany
  • 11. EntityManager • Управляет жизненным циклом Entity объектов – persist() - помещает объект в БД – remove() - удаляет объект из БД – merge() - синхронизирует с БД состояние отсоединенного объекта – refresh() - обновляет из БД состояние объекта
  • 16. Persistence контекст и EntityManager • Persistence контекст – Множество управляемых Entity объектов во время работы приложения – “Объект со статусом управляемый” означает что он принадлежит определенному persistent контексту • EntityManager – Выполняет операции связанные с жизненным циклом Entity объекта – управляет persistent контекстом
  • 17. Persistence контекст и EntityManager • Persistence контекст напрямую не доступен разработчику напрямую – Программного доступа к Persistence контекст нет — в этом нет необходимости – Доступ Persistence контекст осуществляется через EntityManager • Тип EntityManager определяет как будет persistence контекст будет создаваться и удаляться
  • 18. Типы EntityManager • Управляемый контейнером EntityManager (Java EE) • Управляемый приложением EntityManager (Java SE)
  • 19. Как создать EntityManager • Разные типы EntityManager создаются по разному – Управляемый контейнером EntityManager (Java EE) создается контейнером и становится доступным для приложения через механизм инъекций Используется аннотация @PersistenceContext – Управляемый приложением EntityManager (Java SE) создается и закрывается (уничтожается) приложением.
  • 20. Persistence Unit • Все Entity объекты управляемые определенным EntityManager определяются при помощи Persistence Unit • persistence.xml определяет один или несколько Persistence Unit
  • 21. Persistence Unit <?xml version="1.0" encoding="UTF-8"?> <persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"> <persistence-unit name="WebAppPU" transaction-type="JTA"> <jta-data-source>jdbc/demojpa</jta-data-source> <exclude-unlisted-classes>false</exclude-unlisted-classes> <properties> <property name="javax.persistence.schema-generation.database.action" value="create"/> </properties> </persistence-unit> </persistence>
  • 22. Q & A
  • 23. Java EE Persistence (JPA) Беркунский Е.Ю., кафедра ИУСТ, НУК eugeny.berkunsky@gmail.com http://www.berkut.mk.ua