6

我正在开发一个 API 来访问存储在系统中的数据。该系统包含与这些约会相关的人员、约会和程序等内容。我的应用程序将严格只读。

我正在使用带有 RowMapper 的 Spring 来构建诸如“ Person”、“ Appointment”和“ Procedure”之类的对象。我对每个元素都有一个 DAO。(即:PersonDAO.getById(), PersonDAO.getByName(), ..)。

问题在于Appointment引用了一个Person对象。Person在对象中引用 that的约会会很好Person,但是如果我开始加载这些约会,它就会变成循环引用。

所以,我想我的问题是处理这个问题的正确方法只是将引用(Ids)放在 POJO 中,然后让业务层(?)进行正确的调用来获取信息?或者是否可以在实际 POJO 中以某种方式传递对 DAO 的引用,以便我可以在引用时延迟加载对象对象?但是你如何处理循环引用呢?当我有一个Person并且我懒惰地加载他们所有的约会时,这些约会也会有一个与之关联的人。当我加载它时Person,它可能具有与Person我正在加载约会的不同信息。

Person(对象 x)延迟加载 -> 约会可以延迟加载Person(对象 x')。

因为Person当我懒洋洋地加载他们的约会时可能已经改变了。我真的需要这个Person对象Appointment来引用同一个Person对象。

我全都被这件事吸引住了。我知道我可以“让它发挥作用”,但我想尝试找到一个好的解决方案。我正在考虑为此使用hibernate,但认为它真的只是矫枉过正。也许不是。

4

2 回答 2

2

您正在描述一个双向关联,Hibernate 对此有特定的(并且通常非常好的)支持。

在文档中阅读如何做到这一点。

手动滚动这个将非常繁琐且容易出错。我不会推荐它。使用像 Hibernate 这样的 ORM 工具的强大功能,这就是它们的用途。

于 2010-01-09T20:54:16.307 回答
0

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

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

于 2010-01-09T21:28:27.440 回答