具有持久性的实体类中的java Id与引用
这是一个纯粹的理论问题。假设我有一个实体Foo链接到另一个实体栏。显然,两者都被分配了一个唯一的id,持久性系统使用该id链接它们。我的Foo实体类应该引用Bar对象还是Bar对象id?代码:
class Foo {
int id;
Bar bar;
}
或
class Foo {
int id;
int barId;
}
这是一个相当基本的问题,但我没能找到一个令人满意的答案This question的见解很少
在我看来,使用引用更符合OOP的理念,但在不使用延迟加载的情况下,很容易生成空引用和性能问题。另一方面,使用id会更快更容易,但可能会很快导致数据不一致
那么,我们应该做什么,为什么
- 始终使用id
- 始终使用引用
- 取决于模型的类型
如果要视情况而定,是否存在实体大小、“深度”、模型复杂性等决策因素。。。?或者这只是一个测试两者的问题
还有人能给我指一些关于这个问题的文献参考吗
# 1 楼答案
我的经验是,我总是需要外键,因此至少我需要:
包括对Bar的引用取决于应用程序。如果您使用的是ORM,那么Foo可以将条引用作为直接或惰性关系: