jpa
.pdfEntityManager JPA
2-11
Как EntityManager отслеживает
изменения статуса?
Расширение байт-кода
◦ Разработка POJO-сущности
◦ Определение хранимых полей с помощью метаданных
◦ Компиляция ◦ Расширение байт-кода
2-12
EntityManager в EJB3
@Stateless
public class ServiceBean implements Service {
|
@PersistenceContext |
|
EntityManager em; |
|
... |
} |
ServiceBean.java |
Параметры аннотации:
◦unitName — имя JPA модуля
◦type:
PersistenceContextType.TRANSACTIONAL
PersistenceContextType.EXTENDED
2-13
Методы жизненного цикла в интерфейсе EntityManager
boolean isOpen()
◦IllegalStateException если EM
получен с помощью Injection
◦IllegalStateException если
транзакция активна
◦После закрытия все методы вызывают IllegalStateException
void close()
2-14
Интерфейс EntityManager
void persist(Object entity)
◦Делаетвновьсозданнуюсущность
управляемой
◦Данныесохраняются прификсации транзакции
void remove(Object entity)
◦Помечает сущностькудалению
◦Удалениепроисходитпрификсации транзакции
2-15
Интерфейс EntityManager
void refresh(Object entity)
◦Обновляет данные в сущности
◦Перезаписывает все изменения
T find(Class<T> entityClass,
Object key)
◦Может вернуть null
◦Предпочтительнее, чем getReference
T getReference(Class<T> entityClass, Object key)
◦Не возвращает null
2-16
Утилитный класс Persistence в JPA
Содержит два метода для
получения EntityManagerFactory
◦puName — имя Persistence модуля
Может быть пустым
◦Опция Map позволяет задавать
специфичные параметры
2-17
Интерфейс EntityManagerFactory
Содержит два метода для получения EntityManager
◦createEntityManager()
◦createEntityManager(Map map)
Содержит два метода
жизненного цикла
◦boolean isOpen()
◦void close()
2-18
EntityManagerFactory
2-19
Типовой жизненный цикл приложения, использующего БД
Получить запрос пользователя
Решить, стоит ли открывать контекст транзакции
Найти хранимые объекты
Изменить хранимые объекты
Принять решение о фиксации/
отмене/продолжении транзакции
Повтор
2-20