【问题标题】:Java code design bidirectional associationJava代码设计双向关联
【发布时间】:2016-05-26 22:41:09
【问题描述】:

这是一个关于应用程序代码设计的问题。这是我的情况:
我有一个名为 Report 的数据库表,它表示用户在给定月份的工作时间。我有一个 DAO 来处理数据库和一个 @Service,它封装了 dao 的方法并用报告做更多的事情。

此外,我有一个表目标,用于为用户分配关于他们活动的目标(目标可以是每月或每年)。我又有了一个 DAO 和一个 @Service 来使用这些实体。

我的问题是关于设计的,因为我在两个服务之间存在双向关联,尤其是对于以下流程:

  • 添加、修改或删除报表时,报表服务需要更新目标服务..
  • 当我们需要计算一个目标的进度时,目标服务需要报告服务

我正在重构我的应用程序,看到两个相互需要的 bean bean 让我觉得这不太好......
有没有办法正确设计这种情况(我的意思是我的两个服务之间的关联)还是应该保持双向关联?

【问题讨论】:

  • 你没有定义服务接口吗?这样你就不会依赖服务 bean(实现)。
  • 是的,我的服务和 DAO 都使用接口。但是,在我的实现中,两个类之间仍然存在这种“循环”链接,这不是很漂亮且难以维护,尤其是在我的单元测试中..
  • 为什么目标必须在报告发生突变时发生变化?你能解释一下吗?
  • 当一个报表被修改时(例如通过改变总工作时间),我必须通知Target的Service以便更新与这个报表相关的Target对象(如果有的话),更新进度(%)。这将确保两个对象之间具有良好的数据一致性...

标签: java spring associations bidirectional


【解决方案1】:

最后,我通过在我的 ReportDAO 中进行一些更改并在我的 TargetService 中调用它来解决我的问题。通过这样做,我可以删除我的两个服务之间的双向关联,并且只有一个单向关联。

【讨论】:

    猜你喜欢
    • 2013-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-26
    • 1970-01-01
    • 2011-07-01
    • 1970-01-01
    • 2013-03-07
    相关资源
    最近更新 更多