0

我有一个“项目”实体/类,其中包括许多“复杂”字段,例如作为具有许多不同可能实现的接口引用。举个例子:一个接口属性, T 几乎可以是任何类型(与我实现的类型一样多)。

我使用 JPA。对于这些字段,我别无选择,只能将它们实际序列化以存储它们。尽管我不需要在查询中使用这些对象,但这显然会导致一些问题,例如开始时的维护/更新。

我有两个问题:

1)如果我的序列化类中有“重大”更改(大部分时间序列化更改处理得很好),是否有一个“技巧”可以让我的数据库保持最新?

2) 转向 JDO 会有帮助吗?我对 JDO 的经验很少,但我的理解是,使用 JDO,表中的序列化对象永远不会发生(但是如何处理更改?)。为了支持 2)我还必须补充一点,我拥有的对象图可能非常复杂,例如可能涉及 10 个表,只是为了检索一个完整的“项目”。

4

1 回答 1

0

JDO 显然支持接口字段的持久性(但后来 DataNucleus JPA 也允许它们的持久性,但作为供应商扩展)。让某个接口字段成为任何可能的类型之一会给RDBMS而不是 JDO 本身带来问题。底层数据存储更多是您的问题(无法充分镜像您的模型),许多其他数据存储之一可以帮助您解决这个问题。例如,DataNucleus JDO/JPA 支持 GAE/Datastore、Neo4j、MongoDB、HBase、ODF、Excel 等,并简单地将相关对象的“id”保存在拥有对象表示的“列”(或等效项)中......所以这样的重大变化会比你现在拥有的要少得多

于 2013-03-27T13:44:50.400 回答