У меня есть таблица БД с множеством столбцов и связанных сущностей.
Обновление поддерживается в некоторых столбцах. Мне нужно вести историю данных, которые перезаписываются при обновлении / удалении, в отдельной таблице. Варианты, которые я рассмотрел, приведены ниже:
1. Hibernate-envers: Наиболее простой в использовании, но проблема заключается в том, что вставка в таблицу аудита является синхронной, и она также становится частью реальной транзакции. Что не является желаемым решением для моего варианта использования.
2. Debezium: Хотя это и делает вставку аудита асинхронной, но для моего сценария использования это выглядит излишним, поскольку включает в себя установку множества служб, таких как Kafka, zookeeper, и, похоже, существует несколько точек отказа.
3. Слушатели JPA: Я могу использовать их, чтобы получить обновляемые / удаленные данные и вызвать асинхронную вставку в таблицу истории. Единственная проблема, которую я вижу здесь, это то, что мне придется копировать реальный код классов сущностей в сущности истории.
Пожалуйста, предложите решение, с которым я могу пойти дальше. Спасибо.