Как отслеживать / записывать версии изменений объекта - PullRequest
1 голос
/ 14 марта 2012

Мы хотим реализовать функцию «контроля версий» в нашем проекте Java (JSF / EJB / JSF).Позвольте мне привести пример:

       -----
       | A |
       -----
        1/\1
        /  \
      */    \*
    -----   -----
    | B |   | C |
    -----   -----    

На приведенной выше диаграмме показан простой объект-граф с 3 объектами, т. Е. A, B и C. B и C "являются частью" A, любые изменения в A и/ или B и / или C необходимо создать новую версию A.

Вопрос в том, как реализовать это, как на стороне Java, так и на стороне базы данных?

Мы получили 2 решения, такдалеко и еще не определено:

SolutionA : очень изменения в частях A приведут к новому глубокому клону A, и этот клон будет устойчивым через JPA к базе данных в качестве новой версии,Плюсы: реализация проста, минусы: есть много избыточности (учитывая случай, когда граф объектов очень большой) как на стороне Java, так и на базе данных.

SolutionB : только создавать измененную частьА в базе данных.Плюсы: нет избыточности, производительность БД может быть лучше.Минусы: это нарушает объект-граф, и мы должны вручную поддерживать отношения / ссылки между объектами.может превратить развитие в кошмар.

Есть идеи?

1 Ответ

0 голосов
/ 13 сентября 2012

Для этого в JAVA существует хорошая структура, посмотрите: Envers .

Из-за проблем с производительностью я не уверен, как работает фреймворк (избыточность или нет в базе данных), но вы избежите клонирования объектов.

...