поддержка временных линий в режиме гибернации или oracle?

#java #oracle #hibernate #orm

#java #Oracle #гибернация #orm

Вопрос:

У нас есть требование для сохранения версионных объектов Java с использованием режима гибернации в базе данных Oracle, чтобы каждая версия имела временную метку valid-from и valid-until. Это делается для того, чтобы мы могли запрашивать объекты как-в определенное время.

Предоставляет ли Hibernate или Oracle 11g (или что-либо еще) что-нибудь, что упростило бы это?

Комментарии:

1. и flashback, и envers являются возможными решениями, но я не могу принять оба.

Ответ №1:

Если у вас есть Oracle Enteprise Edition, вы можете создать архив воспоминаний для рассматриваемых таблиц, а затем, используя обычный SQL, вы можете выполнить SELECT * FROM table_name AS OF timestamp

Oracle будет управлять всем в фоновом режиме для вас, как только будет создан архив flashback.

Некоторые дополнительные подробности приведены в руководстве:

https://docs.oracle.com/en/database/oracle/oracle-database/18/adfns/flashback.html#GUID-CAC23AAE-AD5A-47FA-B446-B4DE00B2B876

Ответ №2:

Взгляните на Hibernate Envers

Проект Envers направлен на обеспечение простого аудита / управления версиями постоянных классов. Все, что вам нужно сделать, это аннотировать свой постоянный класс или некоторые его свойства, которые вы хотите проверить, с помощью @Audited. Для каждого проверяемого объекта будет создана таблица, в которой будет храниться история изменений, внесенных в объект. Затем вы можете извлекать исторические данные и запрашивать их без особых усилий.

Комментарии:

1. Просматривая документацию по этому вопросу, я вижу, что вы можете выбрать данную ревизию, но я не вижу, где вы можете выбрать, используя дату на момент.