我们希望在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 :仅在数据库中创建A的已更改部分。 优点:没有冗余,DB性能可能更好。缺点:这打破了对象图,我们必须手动维护对象之间的关系/引用。可能会把发展推向噩梦。
有什么想法吗?