带有其他POJO引用的POJO

6
我正在开发一个API,用于访问存储在系统中的数据。该系统包含诸如人员、约会和与这些约会相关的程序等内容。我的应用程序将严格是只读的。
我使用Spring w/ RowMapper构建对象,例如“Person”、“Appointment”和“Procedure”。我为每个元素都有一个DAO。(即:PersonDAO.getById(),PersonDAO.getByName(),..)。
问题在于,“Appointment”引用了“Person”对象。在“Person”对象中引用那个“Person”的约会会很好,但如果我开始加载它们,就会形成循环引用。
所以,我想问的是正确的处理方式是仅在POJOs中放置引用(Ids),然后由业务层(?)做正确的调用以获取信息?还是可以在实际POJO中传递对DAO的引用,以便在引用时懒惰地加载对象对象?但是,如何处理循环引用呢?当我有一个“Person”并且我懒惰地加载他们的约会时,这些约会也会与之关联一个人。当我加载此“Person”时,它可能具有不同的信息,而不是我为约会加载的“Person”。
因为“Person”在我想要懒惰地加载他们的约会时可能已经改变了。我真的需要在“Appointment”中的“Person”对象返回到相同的“Person”对象。
我被这个问题卡住了。我知道我可以“让它工作”,但我想尝试找到一个好的解决方案。我考虑使用hibernate来解决这个问题,但认为这真的只是过度杀伤力。也许不是。
2个回答

2
您正在描述一个双向关联,Hibernate对此有特定的(通常非常好的)支持。
在文档中阅读如何做
手动实现这个将会非常琐碎且容易出错。我不建议这样做。使用ORM工具如Hibernate的强大功能,这就是它们存在的目的。

谢谢。我会去看看的。我需要花时间深入研究一下Hibernate。 - jr.

0
扩展使用Hibernate的建议,我建议您查看Hibernate支持的JPA注释支持(我相信它是J2EE规范的一部分)。您可以使用@ManyToMany注释对类进行注释。请查看以下文档:

https://www.hibernate.org/397.html


@ManyToMany与双向关联并没有什么实际关系,它是一种正交的概念。 - skaffman
1
你是对的。我加进去是为了在他具体的情况下更清楚地表达。我想在Person和Appointment的模型中,许多人可以属于一个Appointment,一个人可以有多个Appointments。在这种情况下,您将在双向关系的其中一半使用@ManyToMany,另一半使用@MappedBy。希望这能澄清事情。 - D.C.
实际上,在我的特定情况下,一个约会只有一个与之相关的人,但一个人可以有多个约会。 - jr.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接