Как я мог сделать перехватчик для EntityManager.class - PullRequest
2 голосов
/ 15 февраля 2012

Я хочу проверять вставки, обновления, удаления и т. Д., Используя entitymanager. Для этого, как я могу сделать перехватчик для EntityManager.class, который будет работать с EJB ???

1 Ответ

7 голосов
/ 15 февраля 2012

Для этого вам не нужно добавлять перехватчик, просто используйте JPA методы обратного вызова и / или прослушиватели сущностей .

При первом подходе вы добавляете к сущности методы, объявленные с одной из следующих аннотаций: @PrePersist, @PostPersist, @PreUpdate, @PostUpdate, @PreRemove, @PostRemove или @PostLoad. Имена говорят сами за себя, это означает, что для каждого события (pre-persist, post-persist и т. Д.) Вызывается аннотированный метод.

Второй подход аналогичен, но методы реализованы в одном или нескольких отдельных классах, которые, в свою очередь, добавляются к сущности с помощью аннотации @EntityListeners.

Второй подход является более гибким, но в любом случае вы можете перехватить операцию сохранения непосредственно перед / после того, как они происходят, и выполнить необходимые вам операции.

...