我有一个“项目”实体/类,它包含许多“复杂”字段,例如作为具有许多不同可能实现的接口引用。举个例子:一个接口属性,几乎是任何类型的T(与我实现的类型一样多)。
我使用JPA。对于那些字段,我别无选择,只能实际序列化它们来存储它们。虽然我不需要在查询中使用这些对象,但这显然会导致一些问题,例如维护/更新开始。
我有两个问题:
1)我是否有一个“技巧”可以让我的数据库保持最新状态,以防我的序列化类中发生“破坏性”更改(大多数时候序列化更改处理得很好)?
2)将转向JDO帮助吗?我对JDO的经验很少,但我的理解是,使用JDO,表中的序列化对象永远不会发生(如何处理更改?)。 为了支持2)我还必须补充一点,我所拥有的对象图可能非常复杂,可能涉及10个表只是为了检索一个完整的“项目”。
答案 0 :(得分:0)
JDO显然支持接口字段的持久性(但是DataNucleus JPA也允许它们的持久性,但作为供应商扩展)。将某些接口字段作为任何可能类型之一会向 RDBMS 而不是向JDO提出问题。基础数据存储更多是您的问题(无法充分镜像您的模型),而且许多其他数据存储中的一个可以帮助您。例如,DataNucleus JDO / JPA支持GAE / Datastore,Neo4j,MongoDB,HBase,ODF,Excel等,并简单地将相关对象的“id”保存在拥有对象表示中的“列”(或等效物)中......因此,这种突破性的变化将远远低于你现在的变化