Шаблоны прослушивателей событий Hibernate - PullRequest
1 голос
/ 20 сентября 2010

Для веб-приложения Java (Struts / Spring / Hibernate) прослушиватели событий Hibernate являются новой функцией ведения журнала аудита.

Когда необходимо собрать некоторую дополнительную информацию, такую ​​как пользователь, который обновил сущность, подробности того, какие атрибуты сущности изменились по сравнению с предварительными атрибутами сущности и т. Д., Существуют ли образцы наилучшей практики, которым можно следовать?

Пример. Для информации, относящейся к пользователю, если каждый объект поддерживает атрибуты журнала изменений (UpdatesBy, CreatedBy), то сам объект может предоставить информацию.

Для сравнения, какие атрибуты сущностей изменились по сравнению с предыдущим состоянием сущности в БД, нет ли другого способа, кроме сравнения всех атрибутов сущностей перед вставкой? (Это кажется избыточной мерой)

Ответы [ 2 ]

3 голосов
/ 20 сентября 2010

Если вам это нужно специально для одитинга, нет необходимости заново изобретать колесо - взгляните на JBoss Envers

3 голосов
/ 20 сентября 2010

Справочная документация Hibernate предоставляет AuditInterceptor в качестве примера для реализации Hibernate Interceptor .

Вы можете расширить EmptyInterceptor и переопределить метод boolean onFlushDirty(Object entity, Serializable id, Object[] currentState, Object[] previousState, String[] propertyNames, Type[] types), который имеет ссылку на текущий объект и его идентификатор, содержимое его полей в текущем и предыдущем состоянии и все имена и типы полей .

С приложением на базе Spring вы можете настроить эти перехватчики в контексте приложения Spring, где вы настраиваете Hibernate SessionFactory.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...