Отслеживание изменений в полях БД при использовании ORM - PullRequest
2 голосов
/ 03 января 2011

Я хочу отслеживать изменения, внесенные в каждый столбец в определенной таблице.Я думал о сохранении изменений в другой таблице со следующими столбцами: id, field, and data, где field (строковое значение) - это столбец в целевой таблице, который был изменен, а data - это новое значение этого поля.

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

Исходя из вышеизложенного, у меня есть следующие вопросы:

  1. Имеет ли смысл мой подход?Есть ли лучший способ достичь желаемых результатов?
  2. Я использую JPA 2 для обработки ORM, есть ли какие-либо функции ORM, которые могут помочь в достижении конечной цели?

Спасибо

Ответы [ 2 ]

3 голосов
/ 03 января 2011

Проверьте Hibernate Envers и Eclipselink хронологический сеанс для аудита сущностей. Спецификация JPA 2.0 не имеет ничего общего с проверкой сущностей ..

1 голос
/ 03 января 2011

Ваш подход в порядке.Вам может понадобиться много полей «данных» для охвата различных типов данных (например, дата, текст, длинный текст).

Что я делаю, чтобы решить эту проблему (но также легко предоставляю возможности отката), это использование xstream и механизм обработки текста.Я использую xstream, чтобы получить снимок pojo в формате xml, затем применить редактирование пользователя, а затем получить другой.Я различаю два снимка и сохраняю текст различий.Также, приложив некоторые усилия, я смогу распечатать модификацию в стиле вики.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...