java - 如何在 Java Berkeley DB 中存储 ArrayList 字段?

标签 java serialization tuples berkeley-db-je

我在 Java 中使用 TupleSerialBinding 将这个结构存储在 berkeley DB 中:

public class SampleValues implements Serializable, MarshalledEntity {
private static final long serialVersionUID = 1L;

    protected double min;
    protected double max;

    protected ArrayList<Double> values = new ArrayList<Double>();
}

关键是使用类创建 EntryBinding 的最小值。 在我基于 SamplesValues 创建 EntityBinding 之后

我没有找到如何使用 TupleSerialBinding 存储“值数组”。

存储了 min 和 max 的值,但不存储 value 数组。

最佳答案

我将为 SampleValues 类创建一个代理

@Persistent(proxyFor = SampleValues.class)
public class SampleValuesProxy implements PersistentProxy<SampleValues>, Serializable {
    ....
}

实现

initializeProxy
convertProxy
newInstance

将 SampleValues 类转换为 SampleValuesProxy 类的实例方法。用简单的 [] 替换代理中的 ArrayList。

然后您需要将代理注册到 EntityModel 中

EntityModel model = new AnnotationModel();
model.registerClass(SampleValuesProxy.class);

并将模型放入 storeconfig

因此,当 berkleydb 去存储您的 SampleValues 对象时,它将其转换为代理类,并写入它(读取时反之亦然)

看类(class)

com.sleepycat.persist.impl.MapProxy

在 berkeleydb 源代码发行版中获取有关如何实现它的示例。

关于java - 如何在 Java Berkeley DB 中存储 ArrayList 字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7373508/

相关文章:

java - 如何更好地在OptaPlanner中应用过度约束规划?

swift - 使用两个类创建协议(protocol)

python - 从元组列表中返回最大值

json - 二郎 : Tuple List into JSON

python - 如果可以向元组添加 (a += (3,4)),那么元组如何不可变

java - Hibernate 存储过程 - 未知支持 REF_CURSOR 参数

java - SQL 语句和准备语句错误

java - 未使用 RSA 加密加密的大数据

c# - 根据属性将元素反序列化为属性

c# - 如何明智地在 C# 中存储大量序列化的二进制文件?