JPA: идеи для отслеживания эволюции / изменений сущностей - PullRequest
6 голосов
/ 28 января 2011

Мне было интересно, есть ли простой способ реализовать отслеживание изменений в сущностях? Есть Envers из Hibernate для проведения аудита, но, насколько я понял, он ориентирован на Hibernate. Я думаю, есть ли что-то внутри JPA, или решение, которое не выходит за пределы спецификации. Если там ничего не сделано, может кто-нибудь может подсказать мне, как начать с такого рода вещами. Одна идея, которая приходит ко мне, - это создать сущность, например:

class Change {
  String className;
  long id;
  String fieldName;
  String fieldValue;
  Date dateOfChange;
}

Который будет содержать измененные свойства. Это решение кажется довольно эффективным с точки зрения места хранения, но может быть сложнее обрабатывать отношения между сущностями, которые отслеживаются (пока не выяснил).

Я очень ценю любой вклад в эту тему,

С уважением, П.

1 Ответ

4 голосов
/ 28 января 2011

Вы можете использовать аннотацию @PrePersist, чтобы создать запись и сохранить ее в базе данных.

class Entity{

    @PrePersist
    public void logChanges(){
        Change c = new Change()
        c.setEverythingXouLikeToLog();

        entityManager.persist(c);
        // don't forget ExceptionHandling
    }

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