首先,我是Hibernate的新手。 我有一个用Netbeans构建的独立Java应用程序,试图尽可能地保持MVC模型。我的模型类尽可能地类似于数据库表和列。对数据库进行规范化以避免冗余。 但是,我注意到在我的许多模型类中都有一个特定的属性是很方便的。此属性在数据库中可用,但在大多数情况下,必须执行多个连接才能获取它。 因此,我将此属性添加到我的模型类中以便于访问。
实施例:
Object A
与Object B
有关系,与Object C
有关系。 Object C
有property X
。
这种关系是一对多的; Object A
将主键Object B
作为列,依此类推。
现在,我想找到与Object A
相关联的所有property X
。我必须做多个连接才能得到答案。 Property X
也适用于Object A
,但我不希望它作为数据库中Object A
的属性,因为这是冗余。在应用程序中,我将此property X
添加到Object A
类中,以方便访问。
现在我想实现Hibernate而不是我自己设计的(服务)类,我不知道如何处理这个属性。我在POJO中将其定义为“瞬态”,但我如何填写此属性?如果我让Hibernate执行get tot数据库并将对象(Object A
)返回给我,它将不具有此属性。我是否需要使用此属性的额外构造函数并将Hibernate的对象转换为包含此属性的对象并将其返回到要求它的原始方法?
这样做的正确方法是什么?
答案 0 :(得分:1)
如果您正在使用Hibernate,您可能在类A中有这样的东西:
@OneToMany
private Collection<B> listOfB;
在B中你将拥有:
@OneToMany
private Collection<C> listOfC;
因此,当您从数据库中获取A实体时,您可以执行x操作:
a.getlistOfB(0).getListOfC(0).getX();