gpt4 book ai didi

java - 从数据模型访问同级数据

转载 作者:行者123 更新时间:2023-12-02 10:11:31 25 4
gpt4 key购买 nike

在我的 Java 应用程序中,我通过 JPA 保留应用程序的整个状态。因此,我有一个根 Data 类,其中包含与其他数据对象的关系,例如 SettingsMetadata:

@Entity
@Access(AccessType.FIELD)
public class Data {

@Id
@GeneratedValue
private long id;

@OneToOne(cascade = ALL)
public Settings settings;

@OneToOne(cascade = ALL)
public Metadata metadata;

// etc
}

为了保存/加载状态,我只需将 Data 根实例存储在数据库中,该实例保存到文件中并从文件中加载。因此,我总是有一个 Data 实例和一个相应的 Settings 实例,等等。

在我的数据模型深处,我有一个 Result 类,它看起来有点像这样:

@Entity
@Access(AccessType.FIELD)
public class Result {

@Id
@GeneratedValue
private long id;

public int value;

// etc
}

现在,在这个 Result 类中,我需要访问当前加载的 Settings 实例。但由于 Result 的实例是由 JPA 创建的,因此除了可用的相关数据模型之外,我没有任何引用。

如何最好地授予每个 Result 实例对此 Settings 实例的访问权限?

到目前为止我的想法:

1) 将当前加载的Data对象存储在静态变量中,并通过它访问Settings实例。出于显而易见的原因,这很糟糕。

2) 让每个数据模型类引用各自的所有者,直到 Data 根类。然而,这意味着必须遍历整个数据模型直到根对象,才能够访问它的子对象。此外,这意味着每个对象中都有一个附加字段。

3) 使用依赖注入(inject)(Google Guice?)以某种方式在需要的地方注入(inject)正确的 Settings 实例。不过,我以前从未使用过依赖注入(inject),这是一个好方法吗?

我是否需要改变我的整个方法?

欢迎任何建议和意见。

最佳答案

选项 2 是 JPA 中的常用方法。通过双向映射,您将进入层次结构。为每个类添加逆字段不会导致数据库模型发生任何变化或性能问题。

关于java - 从数据模型访问同级数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54971316/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com