我正在尝试创建实现简单接口的JPA类:
public interface Task<T> {
public void setData(T data);
public T getData();
public void run();
}
由于某些原因,我需要以序列化形式存储T data
,因此我的JPA类需要JPA getter / setter和接口实现。显然,他们需要以某种方式同步。
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
public abstract class AbstractTask<T extends Serializable> implements Task<T> {
private T data;
private byte[] serializedData; // do I need both vars? which one to choose?
@Override
@Transient
public T getData() {
return data; // or deserialized 'serializedData'?
}
@Override
public void setData(T data) {
this.data = data; // or serialize into 'serializedData'?
}
@Column
@Lob
public byte[] getSerializedData() {
return serializedData; // or serialized 'data'?
}
public void setSerializedData(byte[] bytes) {
this.serializedData = bytes;
// deserialize 'bytes' into 'data'?
}
}
同步这些类变量或如何从另一个变量重建的正确方法是什么?这个问题比序列化/反序列化要宽一些,适用于某些对象可以从JPA持久数据中唯一重建的情况,反之亦然。