我正在开发一个API来访问存储在系统中的数据。系统包含人员、约会和与这些约会相关联的程序等内容。我的应用程序将严格是只读的。
我使用Spring / RowMapper来构建诸如"Person“、"Appointment”和"Procedure“这样的对象。我对每个元素都有一个DAO。(例如:PersonDAO.getById(),PersonDAO.getByName(),..)。
问题出在Appointment引用了一个Person对象。在Person对象中有一个对该Person的约会的引用是很好的,但是如果我开始加载这些约会,它就变成了一个循环引用。
所以,我想我的问题是处理这个问题的正确方法就是将引用( in )放在POJO中,然后让业务层(?)只要打个正确的电话就能得到信息?或者可以在实际的POJO中传递对DAO的引用,这样我就可以在被引用时懒惰地加载对象对象?但是,如何处理循环引用呢?当我有一个Person,并且我懒惰地加载他们的所有约会时,这些约会也会有一个与之关联的人。当我加载此Person时,它可能具有与我正在加载约会的Person不同的信息。
延迟加载->约会的Person (对象x)可能延迟加载Person (对象x')。
因为当我懒洋洋地加载他们的约会时,Person可能已经改变了。我真的需要Appointment中的Person对象来引用相同的Person对象。
我被这件事搞得焦头烂额。我知道我可以“让它工作”,但我想试着找到一个好的解决方案。我正在考虑使用hibernate来实现这一点,但我认为这实在是言过其实了。也许不是。
发布于 2010-01-10 04:54:16
您正在描述一个双向关联,Hibernate对此有特定的(通常非常好的)支持。
在文档中阅读有关how to do it的信息。
手动滚动将是相当繁琐和容易出错的。我不建议你这么做。使用像Hibernate这样的ORM工具的强大功能,这就是它们存在的目的。
发布于 2010-01-10 05:28:27
扩展使用Hibernate的建议,我建议查看Hibernate支持的JPA注解支持(我相信它是J2EE规范的一部分)。你可以用@ManyToMany注解你的类。请查看以下文档:
https://stackoverflow.com/questions/2034907
复制相似问题