Я хочу написать компонент истории, который отслеживает изменения в конкретном типе объекта и записывает строки истории на основе различий. Обратите внимание, что это не общая система аудита, она специфична для одного типа объекта.
Я полагаю, что могу подключиться к модели событий гибернации и прослушать события, которые сообщают мне, когда что-то изменилось, наблюдать за любыми изменениями экземпляров интересующего меня типа объекта, а затем иметь некоторый пользовательский код, генерирующий строки истории .
Я хочу, чтобы строки истории были записаны в одной транзакции, и в идеале использовать hibernate (следовательно, используя тот же сеанс)
У меня есть несколько вопросов / проблем
- Какие события гибернации я должен перехватить, если я хочу перехватить только изменения?
- Как мне участвовать в том же сеансе / транзакции, что и сеанс, который генерирует события. Я прочитал, что есть проблемы, взаимодействующие с Session внутри обработчиков событий?
Любая помощь приветствуется.