我在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 model = new AnnotationModel();
model.registerClass(SampleValuesProxy.class);
并将模型放入storeconfig
因此,当berkleydb去存储您的SampleValues对象时,它将其转换为代理类,并写入它(读取时反之亦然)
看这个类
com.sleepycat.persist.impl.MapProxy