java - 具有持久性的实体类中的 Id 与引用

标签 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
  • 始终使用引用
  • 取决于型号

如果它取决于,是否有实体大小、“深度”、模型复杂性等决策因素......?或者只是测试两者的问题?

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

最佳答案

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

class Foo {
    int id;
    int barId;
}

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

class Foo {
    int id;
    int barId;
    Bar bar;
}

关于java - 具有持久性的实体类中的 Id 与引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34132910/

相关文章:

java - bigdata hadoop java codefor wordcount已修改

java - 在 cygwin 中启动 Java 程序 (jmeter)

database - PostgreSQL JPA 级联部分工作

xmlstarlet 解析器错误 : Entity '*' not defined

entity - 如何在不知道其名称的情况下获取 Doctrine2 实体标识符

java - BeanMap 到 HashMap 的转换?

java - 如何在调用 Join() 之前停止线程返回

php - 将所有与数据库相关的方法都放在一个类中是个好主意吗?

c++ - 从文件中将对象读入数组,反之亦然

php - 何时实现和扩展?