【发布时间】:2010-02-25 10:40:25
【问题描述】:
在我们的旧版 Java EE 应用程序中,有很多值对象 (VO) 类通常只包含 getter 和 setter,可能是 equals() 和 hashCode()。这些(通常)是要保存在持久性存储中的实体。 (作为记录,我们的应用程序没有 EJB - 尽管 可能 将来会发生变化 - 我们使用 Hibernate 来持久化我们的实体。)在 VO 中操作数据的所有业务逻辑都是分开的类(不是 EJB,只是 POJO)。我的 OO 心态讨厌这一点,因为我确实相信给定类的操作应该驻留在同一个类中。所以我有一种重构的冲动,把逻辑移到相关的 VO 中。
我刚刚与一位在 Java EE 方面比我更有经验的同事进行了讨论,他确认愚蠢的实体至少曾经是推荐的方法。然而,他最近也阅读了一些质疑这种立场有效性的意见。
我知道有些问题至少会限制实体类中可以放入的内容:
- 它不应该直接依赖于数据层(例如,查询代码应该进入单独的 DAO)
- 如果它直接暴露给更高层或客户端(例如通过 SOAP),则可能需要限制其接口
还有没有更充分的理由不将逻辑移动到我的实体中?或者还有其他需要考虑的问题?
【问题讨论】:
-
实体是画外音吗?
标签: java oop jakarta-ee entity