繁体   English   中英

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

[英]How can I store an ArrayList field in a Java Berkeley DB?

我在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存储“values数组”。

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

我会为SampleValues类创建一个Proxy

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

实施

initializeProxy
convertProxy
newInstance

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

那么您需要将EntityModel注册为代理

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

并将模型放在storeconfig中

那么当berkleydb去存储你的SampleValues对象时,它会将它转换为代理类,并将其写入(反之亦然)

看看课程

com.sleepycat.persist.impl.MapProxy

在berkeleydb源代码分发中有关如何实现它的示例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM