【发布时间】:2010-01-09 20:51:29
【问题描述】:
我正在开发一个 API 来访问存储在系统中的数据。该系统包含与这些约会相关的人员、约会和程序等内容。我的应用程序将严格只读。
我正在使用带有 RowMapper 的 Spring 构建对象,例如“Person”、“Appointment”和“Procedure”。我对每个元素都有一个 DAO。 (即:PersonDAO.getById()、PersonDAO.getByName()、..)。
问题在于Appointment 引用了Person 对象。在Person 对象中引用Person 的约会会很好,但如果我开始加载这些约会,它就会变成循环引用。
所以,我想我的问题是处理这个问题的正确方法,只需将引用(ID)放入 POJO 中,然后让业务层(?)进行正确的调用以获取信息?或者是否可以在实际 POJO 中以某种方式传递对 DAO 的引用,以便我可以在引用时延迟加载对象对象?但是你如何处理循环引用呢?当我有一个Person 并且我懒惰地加载他们所有的约会时,这些约会也会有一个与之关联的人。当我加载此Person 时,它可能具有与我正在加载约会的Person 不同的信息。
Person (object x) 延迟加载 -> 约会可以延迟加载 Person (object x')。
因为 Person 在我懒洋洋地加载他们的约会时可能已经改变了。我真的需要Appointment 中的Person 对象来引用同一个Person 对象。
我正在全力以赴。我知道我可以“让它发挥作用”,但我想尝试找到一个好的解决方案。我正在考虑为此使用hibernate,但认为它真的只是矫枉过正。也许不是。
【问题讨论】:
标签: java hibernate lazy-loading circular-reference