gpt4 book ai didi

java - 在 Hibernate 中使用 Transient 属性

转载 作者:行者123 更新时间:2023-12-01 09:47:52 25 4
gpt4 key购买 nike

首先,我是 Hibernate 新手。我有一个在 Netbeans 中构建的独立 Java 应用程序,试图尽可能保持 MVC 模型。我的模型类尽可能类似于数据库表和列。数据库被标准化以避免冗余。然而,我注意到在我的许多模型类中拥有某个可用的属性很方便。该属性在数据库中可用,但在大多数情况下需要进行多次连接才能获取它。因此,我将此属性添加到我的模型类中以便于访问。

示例:对象A对象B有关系,而对象B对象C有关系。 对象 C 具有属性 X。关系是一对多; 对象 A对象 B 的主键作为列,依此类推。现在我想找到所有连接到属性X对象A。我必须进行多次连接才能得到答案。 Property X 也适用于Object A,但我不希望它作为数据库中Object A 的属性,因为这是冗余。在应用程序中,我将此属性 X 添加到对象 A 的类中,以便于访问。

现在我想实现 Hibernate 而不是我自己设计的(服务)类,并且我不知道如何处理这个属性。我已在 POJO 中将其定义为“Transient”,但如何填充此属性?如果我让 Hibernate 执行数据库获取并将对象 (Object A) 返回给我,它将不具有此属性。我是否需要一个带有此属性的额外构造函数,并将 Hibernate 的对象转换为包含此属性的对象,并将其返回到要求它的原始方法?

正确的做法是什么?

最佳答案

如果您使用 Hibernate,您的 A 类中可能有类似的内容:

@OneToMany
private Collection<B> listOfB;

在B中你将拥有:

@OneToMany
private Collection<C> listOfC;

因此,当您从数据库中获取 A 实体时,您可以让 x 执行以下操作:

a.getlistOfB(0).getListOfC(0).getX();

关于java - 在 Hibernate 中使用 Transient 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37836748/

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