Мы хотим реализовать функцию «управления версиями» в нашем проекте Java (JSF / EJB / JSF). Приведу пример:
----- | A | ----- 1/\1 / \ */ \* ----- ----- | B | | C | ----- -----
На приведенной выше диаграмме показан простой объект-граф с 3 объектами, то есть A, B и C. B и C «являются частью» A, любые изменения в A и / или B и / или C требуют создания новой версии A. .
Вопрос в том, как это реализовать, как на стороне Java, так и на стороне базы данных?
У нас есть 2 решения, которые еще не решены:
РешениеA: значительные изменения в частях A вызовут новый глубокий клон A, и этот клон будет сохранен через JPA в базе данных в качестве новой версии. Плюсы: реализация проста, минусы: существует много избыточности (учитывая, что граф объектов очень большой) как на стороне Java, так и в базе данных.
РешениеB: создавать только измененную часть A в базе данных. Плюсы: нет избыточности, производительность БД может быть лучше. Минусы: это нарушает объектный граф, и нам приходится вручную поддерживать отношения / ссылки между объектами. может превратить развитие в кошмар.
Любая идея ?