JDO最佳实践:将对象存储为其父级或独立的集合?

时间:2011-02-01 10:55:06

标签: java jdo datanucleus

我有一个UserTransaction

每个Transaction逻辑上属于User。但我可能需要查询某些事务子集(例如:使用Transaction.type=1返回用户A的所有事务)

在SQL中,我只维护一个Transaction.userID字段,将其与User表链接。

  • 在JDO的对象世界中我应该这样做吗?存储事务对象与指向User对象ID的字段分开?或者我应该只查询类型= 1(例如)?
  • 的事务的相应User对象和子查询
  • 如果我只查询User对象,我是否也可以返回给定查询感兴趣的Transaction个对象(如前面的项目符号示例中所示)?

1 个答案:

答案 0 :(得分:1)

恕我直言,没有最佳做法一般。但是,对于在面向对象的上下文中具有事务的用户,我将为用户建模以使每个事务具有对其用户对象的引用的列表或事务集。

通过这种方式,您可以获取用户的所有交易,只需获取用户对象,然后从那里获取交易清单。

另一方面,您可以查询限制为特定类型的特定用户的事务。由于每个事务都与用户对象有关联,因此您始终可以“免费”获得正确的上下文。

当然,你应该考虑像懒惰和急切加载这样的设置,这取决于实体在检索后会发生什么情况(它们是在进程中使用还是被序列化并传输到远程进程等)