具有持久性

时间:2015-12-07 11:51:36

标签: java oop entity persistence class-design

这是一个纯粹的理论问题。假设我有一个实体Foo链接到另一个实体Bar。显然,两者都被分配了一个唯一的id,持久性系统使用它来链接它们。我的Foo实体类是否应该引用Bar对象或Bar对象id?在代码中:

class Foo {
    int id;
    Bar bar;
}

class Foo {
    int id;
    int barId;
}

这是一个非常基本的问题,但我找不到令人满意的答案。 This question的见解很少。

我认为使用引用的方式更多的是OOP哲学,但是在不使用延迟加载的情况下很容易生成空引用和性能问题。另一方面,使用id会更快更容易,但很快就会导致数据不一致。

那应该怎么做以及为什么?

  • 始终使用ID
  • 始终使用参考
  • 取决于模特

如果需要,是否有决定因素,如实体大小,“深度”,模型复杂性......?或者只是测试两者的问题?

还有人可以指点我关于这个问题的一些文献参考吗?

1 个答案:

答案 0 :(得分:1)

我的经验是,我总是需要外键,所以至少需要:

class Foo {
    int id;
    int barId;
}

包括对Bar的引用取决于应用程序。如果您正在使用ORM,那么Foo可以将Bar引用作为直接或惰性关系:

class Foo {
    int id;
    int barId;
    Bar bar;
}
相关问题