我正在开发一个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来解决这个问题,但认为这真的只是过度杀伤力。也许不是。
我使用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来解决这个问题,但认为这真的只是过度杀伤力。也许不是。