#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.
Некоторые дополнительные подробности приведены в руководстве:
Ответ №2:
Взгляните на Hibernate Envers
Проект Envers направлен на обеспечение простого аудита / управления версиями постоянных классов. Все, что вам нужно сделать, это аннотировать свой постоянный класс или некоторые его свойства, которые вы хотите проверить, с помощью @Audited. Для каждого проверяемого объекта будет создана таблица, в которой будет храниться история изменений, внесенных в объект. Затем вы можете извлекать исторические данные и запрашивать их без особых усилий.
Комментарии:
1. Просматривая документацию по этому вопросу, я вижу, что вы можете выбрать данную ревизию, но я не вижу, где вы можете выбрать, используя дату на момент.