这是一个纯粹的理论问题。假设我有一个实体Foo链接到另一个实体Bar。显然,两者都被分配了一个唯一的id,持久性系统使用它来链接它们。我的Foo实体类是否应该引用Bar对象或Bar对象id?在代码中:
class Foo {
int id;
Bar bar;
}
或
class Foo {
int id;
int barId;
}
这是一个非常基本的问题,但我找不到令人满意的答案。 This question的见解很少。
我认为使用引用的方式更多的是OOP哲学,但是在不使用延迟加载的情况下很容易生成空引用和性能问题。另一方面,使用id会更快更容易,但很快就会导致数据不一致。
那应该怎么做以及为什么?
如果需要,是否有决定因素,如实体大小,“深度”,模型复杂性......?或者只是测试两者的问题?
还有人可以指点我关于这个问题的一些文献参考吗?
答案 0 :(得分:1)
我的经验是,我总是需要外键,所以至少需要:
class Foo {
int id;
int barId;
}
包括对Bar的引用取决于应用程序。如果您正在使用ORM,那么Foo可以将Bar引用作为直接或惰性关系:
class Foo {
int id;
int barId;
Bar bar;
}