有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

具有持久性的实体类中的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) 个答案

  1. # 1 楼答案

    我的经验是,我总是需要外键,因此至少我需要:

    class Foo {
        int id;
        int barId;
    }
    

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

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