如何反序列化实体,将其置于托管上下文中,但不保留任何更改?

时间:2011-07-25 11:55:20

标签: java serialization orm persistence

我是坚持不懈的新手,我想做以下事情:

1)将一部分数据库加载到实体中并将它们存储在文件中

2)从文件中加载这些实体,将它们放在托管上下文中(以便所有@JoinColumn和@JoinTable,特别是那些具有延迟获取类型的实体可以正常工作)并确保我不会意外地更新数据库它们。

重点是,每次启动应用程序时,我都不想为几乎从不更改的表调用数据库 - 所以我想将它们存储在本地,最好是存储在文件中。

虽然第1部分很简单,但我对第2部分有些担忧。我认为只要我确保不调用em.flush(),loadObject和em.persist()就可以正常工作。

但有一次我想检查数据库中的对象是否未被更改。如果我在我的反序列化实体上调用persist(),同时数据库发生更改,则在刷新哪个版本后会保留?

有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

从数据库加载此对象的“托管”副本。 然后更新从您从文件中读取的对象复制属性。

您将有一个尚未序列化为数据库的“托管”实体。

根据您的逻辑流程,您可以在将其与数据库实例合并之前将其中止。