我正在使用API来访问存储在系统中的数据。系统包含与这些约会相关的人员,约会和程序。我的申请将严格为只读。
我正在使用Spring w / RowMapper来构建诸如“Person
”,“Appointment
”和“Procedure
”之类的对象。我为每个元素都有一个DAO。 (即:PersonDAO.getById()
,PersonDAO.getByName()
,..)。
问题在于Appointment
引用了Person
对象。在Person
对象中引用Person
的约会是很好的,但如果我开始加载这些约会,它将成为循环引用。
所以,我想我的问题是处理这个问题的正确方法只是将引用(Ids)放在POJO中然后让业务层(?)只是做出正确的调用来获取信息?或者是否可以以某种方式传递实际POJO中对DAO的引用,以便在引用时可以懒惰地加载对象对象?但那么你如何处理循环引用?当我有一个Person
并且我懒洋洋地加载他们的所有约会时,这些约会也会有一个与他们相关联的人。当我加载此Person
时,它可能会有Person
我正在加载约会的差异信息。
Person
(对象x)懒惰加载 - >约会可能会懒惰地加载Person
(对象x')。
因为{懒惰地加载约会时Person
可能已经改变了。我真的需要Person
中的Appointment
对象来引用相同的Person
对象。
我对此感到高兴。我知道我可以“让它成功”,但我想尝试找到一个好的解决方案。我正在考虑使用hibernate,但是认为这真的太过分了。也许不是。
答案 0 :(得分:2)
您正在描述一种双向关联,Hibernate具有特定(通常非常好)的支持。
阅读文档中的how to do it。
手动滚动这将是非常繁琐且容易出错的。我不推荐它。使用像Hibernate这样的ORM工具的强大功能,这就是他们所需要的。
答案 1 :(得分:0)
扩展使用Hibernate的建议,我建议查看Hibernate支持的JPA注释支持(我相信它是J2EE规范的一部分)。您可以使用@ManyToMany批注对类进行批注。看看这些文档: