Есть ли способ записать базу данных аудита при весенней загрузке, используя Spring Data Envers с spring JDBCTemplate?

Я создаю веб-приложение Spring, которое использует базу данных MySQL с Spring JDBCTemplate. Проблема в том, что я хочу записывать любые изменения в данных, хранящихся в базе данных MySQL. Я не смог найти решение для Spring Data Envers с JDBCTemplates для записи изменений.

Как лучше всего записывать любые изменения данных в базе данных? или просто написав текстовый файл в приложении Spring?


person Jian Shang Quan    schedule 30.09.2020    source источник


Ответы (1)


Envers, на котором строится Spring Data Envers, является надстройкой Hibernate и использует его механизм обнаружения изменений, чтобы инициировать запись ревизий в базу данных.

JdbcTemplate ничего из этого не имеет, он просто упрощает выполнение операторов SQL, абстрагируя повторяющиеся задачи, такие как обработка исключений или повторение ResultSet запросов. JdbcTemplate не знает, что на самом деле делает оператор, который он выполняет.

Как часто у вас есть несколько вариантов:

  1. поместите триггеры в свою базу данных, которые записывают изменения.
  2. использовать некоторые зависящие от базы данных функции, такие как Oracles Change Data Capture
  3. Вы можете создать оболочку JdbcTemplate, которая анализирует оператор SQL и создает запись в журнале. Это возможно только тогда, когда вам нужна очень ограниченная информация, например, какой оператор был выполнен и какая таблица была затронута.
  4. Если вам нужно больше семантической информации, вероятно, лучше всего использовать еще более высокий уровень стека вашего приложения, такой как контроллер или служба, для сбора соответствующей информации и записи ее в базу данных. Вероятно, также использовал JdbcTemplate.
person Jens Schauder    schedule 07.12.2020