JPA:持久数据同步,需要建议

时间:2011-05-19 15:23:24

标签: java jpa

我正在尝试创建实现简单接口的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持久数据中唯一重建的情况,反之亦然。

1 个答案:

答案 0 :(得分:1)

The lifecycle callbacks可以帮到你。特别是PrePersist和PostLoad。