【发布时间】:2010-11-30 18:53:41
【问题描述】:
这是关于历史数据处理的问题。 假设你有一个 MyClass 类,如下所示:
class MyClass {
String field1;
Integer field2;
Long field3;
getField1() {...}
setField1(String ...) {...}
...
}
现在,假设我需要让 MyClass 能够存储和检索旧数据,那么最好的方法是什么?
要求也是通过 Hibernate 持久化类。 每个“实体”最多有两个表:只有一个表或一个表用于“连续性”类(表示随时间演变的实体),另一个表用于历史数据(建议here)
请注意,我必须能够为字段的值分配任意有效时间。
这个类应该有一个类似的接口:
class MyClass {
// how to store the fields????
getField1At(Instant i) {...}
setField1At(Instant i, String ...) {...}
...
}
我目前正在使用JTemporal 库,它有一个TemporalAttribute<T> 类,就像一张地图:您可以执行T myAttr.get(Instant i) 之类的操作来在 Instant i 上获取 myAttr 的版本。我知道如何使用 Hibernate 将 TemporalAttribute 持久化在表中(这很简单:我持久化 TemporalAttribute 使用的 SortedMap,您会得到一个包含开始和结束有效时间以及属性值的表)。
真正的问题是这里我们有多个属性。
我有一个解决方案,但不清楚,我想听听你的想法。
【问题讨论】:
标签: java database hibernate design-patterns class-design