2013-03-15 3 views
1

Мне нужно сохранить историю изменений данных в моей базе данных. Изменения не будут очень распространены, поэтому кажется, что хранить всю строку, а не просто diff, будет более эффективной с точки зрения пространства. Hibernate envers выглядит как достойное решение.Можно ли запретить Hibernate Envers хранить объект в таблице аудита, если он не изменен.

Теперь я замечаю, что таблица аудита больше похожа на теневую таблицу, которая будет хранить данные на первой вставке. Возможно ли предотвратить запрет хранения информации аудита до момента первого обновления. Я просто хочу уменьшить дисковое пространство базы данных, так как я не могу работать на очень высокопроизводительном сервере. Я хочу, чтобы фактическая таблица содержала самые последние данные, а таблица аудита содержала только исторические данные, а не текущую строку. Я не использую какую-либо конкретную конфигурацию в моем persistence.xml. Hibernate 4.1, похоже, находит классы для аудита с аннотациями. Я думаю, что я должен иметь дело с слушателями вставки вставки, но не уверен, что я должен с этим делать.

+0

Вы выяснили способ сделать это? Я пытаюсь добиться чего-то подобного, но я не хочу сохранять какие-либо данные, я просто хочу знать, когда объект был создан/изменен/удален. Цените, если вы можете поделиться своим опытом. – Vikram

+0

Нет, я не ... пока я решил жить с этим ограничением. Некоторые ссылки, которые могут вам помочь: http://stackoverflow.com/questions/12800540/hibernate-envers-how-to-store-only-updated-values ​​ –

+0

http://docs.jboss.org/hibernate/core /4.0/devguide/en-US/html/ch15.html#d0e5519 –

ответ

0

Это была запрошена до и в то время, возможно, была приятной особенностью, ее определенно одна, у которой нет собственного источника проблем.

Поймите, что Envers поставляется с 2 стратегиями аудита: Default и Validity.

DefaultAuditStrategy - очень простая стратегия, которая не ожидает, что в таблице аудита существует любая предыдущая строка ревизии. Эта конкретная стратегия, вероятно, будет легко работать с случаем, когда были сохранены только строки.

Но, к сожалению, другой стратегии не было бы.

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

Возможно, это может измениться в будущем, но на данный момент мы не поддерживаем такой случай.

Смежные вопросы