SlideShare a Scribd company logo
1 of 23
Download to read offline
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

More Related Content

Similar to jpa_nus.pdf

Java core-lect6-part3-annotation.ppt
Java core-lect6-part3-annotation.pptJava core-lect6-part3-annotation.ppt
Java core-lect6-part3-annotation.pptAnton Moiseenko
 
C# Web. Занятие 04.
C# Web. Занятие 04.C# Web. Занятие 04.
C# Web. Занятие 04.Igor Shkulipa
 
разработка бизнес приложений (7)
разработка бизнес приложений (7)разработка бизнес приложений (7)
разработка бизнес приложений (7)Alexander Gornik
 
Майстер-клас "Автоматизоване тестування. З чого почати?
Майстер-клас "Автоматизоване тестування. З чого почати?Майстер-клас "Автоматизоване тестування. З чого почати?
Майстер-клас "Автоматизоване тестування. З чого почати?DataArt
 
Средства разработки web приложений (Web frameworks)
Средства разработки web приложений
(Web frameworks)Средства разработки web приложений
(Web frameworks)
Средства разработки web приложений (Web frameworks)Fedor Malyshkin
 
0. odant intro
0. odant intro0. odant intro
0. odant introOdant
 
Msu.Center.Lectures.J02 Classes And Objects
Msu.Center.Lectures.J02 Classes And ObjectsMsu.Center.Lectures.J02 Classes And Objects
Msu.Center.Lectures.J02 Classes And Objectsolegol
 
iOS 7. Новые концепции и новые средства
iOS 7. Новые концепции и новые средстваiOS 7. Новые концепции и новые средства
iOS 7. Новые концепции и новые средстваAny Void
 

Similar to jpa_nus.pdf (9)

Java core-lect6-part3-annotation.ppt
Java core-lect6-part3-annotation.pptJava core-lect6-part3-annotation.ppt
Java core-lect6-part3-annotation.ppt
 
C# Web. Занятие 04.
C# Web. Занятие 04.C# Web. Занятие 04.
C# Web. Занятие 04.
 
разработка бизнес приложений (7)
разработка бизнес приложений (7)разработка бизнес приложений (7)
разработка бизнес приложений (7)
 
Майстер-клас "Автоматизоване тестування. З чого почати?
Майстер-клас "Автоматизоване тестування. З чого почати?Майстер-клас "Автоматизоване тестування. З чого почати?
Майстер-клас "Автоматизоване тестування. З чого почати?
 
React.js – intro
React.js – introReact.js – intro
React.js – intro
 
Средства разработки web приложений (Web frameworks)
Средства разработки web приложений
(Web frameworks)Средства разработки web приложений
(Web frameworks)
Средства разработки web приложений (Web frameworks)
 
0. odant intro
0. odant intro0. odant intro
0. odant intro
 
Msu.Center.Lectures.J02 Classes And Objects
Msu.Center.Lectures.J02 Classes And ObjectsMsu.Center.Lectures.J02 Classes And Objects
Msu.Center.Lectures.J02 Classes And Objects
 
iOS 7. Новые концепции и новые средства
iOS 7. Новые концепции и новые средстваiOS 7. Новые концепции и новые средства
iOS 7. Новые концепции и новые средства
 

More from ssuser0562f1

Алгоритмизация и программирование С/С++
Алгоритмизация и  программирование С/С++Алгоритмизация и  программирование С/С++
Алгоритмизация и программирование С/С++ssuser0562f1
 
Algorithms and programming lecture in ru
Algorithms and programming lecture in ruAlgorithms and programming lecture in ru
Algorithms and programming lecture in russuser0562f1
 
Geometry algorithms and formulas calculation
Geometry algorithms and formulas calculationGeometry algorithms and formulas calculation
Geometry algorithms and formulas calculationssuser0562f1
 
Algorithms in number theory presentation
Algorithms in number theory presentationAlgorithms in number theory presentation
Algorithms in number theory presentationssuser0562f1
 
Курсовая (1).pdf
Курсовая (1).pdfКурсовая (1).pdf
Курсовая (1).pdfssuser0562f1
 
springdatajpatwjug-120527215242-phpapp02.pdf
springdatajpatwjug-120527215242-phpapp02.pdfspringdatajpatwjug-120527215242-phpapp02.pdf
springdatajpatwjug-120527215242-phpapp02.pdfssuser0562f1
 
springdatajpa-up.pdf
springdatajpa-up.pdfspringdatajpa-up.pdf
springdatajpa-up.pdfssuser0562f1
 
08-170327133157.pdf
08-170327133157.pdf08-170327133157.pdf
08-170327133157.pdfssuser0562f1
 

More from ssuser0562f1 (14)

Алгоритмизация и программирование С/С++
Алгоритмизация и  программирование С/С++Алгоритмизация и  программирование С/С++
Алгоритмизация и программирование С/С++
 
Algorithms and programming lecture in ru
Algorithms and programming lecture in ruAlgorithms and programming lecture in ru
Algorithms and programming lecture in ru
 
Geometry algorithms and formulas calculation
Geometry algorithms and formulas calculationGeometry algorithms and formulas calculation
Geometry algorithms and formulas calculation
 
Algorithms in number theory presentation
Algorithms in number theory presentationAlgorithms in number theory presentation
Algorithms in number theory presentation
 
0808.pdf
0808.pdf0808.pdf
0808.pdf
 
servlets1.pdf
servlets1.pdfservlets1.pdf
servlets1.pdf
 
servlets.pdf
servlets.pdfservlets.pdf
servlets.pdf
 
Курсовая (1).pdf
Курсовая (1).pdfКурсовая (1).pdf
Курсовая (1).pdf
 
springdatajpatwjug-120527215242-phpapp02.pdf
springdatajpatwjug-120527215242-phpapp02.pdfspringdatajpatwjug-120527215242-phpapp02.pdf
springdatajpatwjug-120527215242-phpapp02.pdf
 
springdatajpa-up.pdf
springdatajpa-up.pdfspringdatajpa-up.pdf
springdatajpa-up.pdf
 
08-170327133157.pdf
08-170327133157.pdf08-170327133157.pdf
08-170327133157.pdf
 
waits.pdf
waits.pdfwaits.pdf
waits.pdf
 
waits.pdf
waits.pdfwaits.pdf
waits.pdf
 
geometry.pdf
geometry.pdfgeometry.pdf
geometry.pdf
 

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