gpt4 book ai didi

java - 如何跟踪/记录实体变更的版本

转载 作者:行者123 更新时间:2023-12-01 05:25:42 29 4
gpt4 key购买 nike

我们希望在 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的更改部分。优点:没有冗余,数据库性能可能更好。缺点:这会破坏对象图,我们必须手动维护对象之间的关系/引用。可能会让开发变成一场噩梦。

有什么想法吗?

最佳答案

JAVA中有一个很好的框架,看看:Envers .

对于性能问题,我不确定框架是如何工作的(数据库中有冗余或没有),但您将避免对象克隆。

关于java - 如何跟踪/记录实体变更的版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9701017/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com