在我们的传统Java EE应用程序中,有大量值对象(VO)类,它们通常只包含getter和setter,可能是equals()
和hashCode()
。这些(通常)是要保存在持久性存储中的实体。 (为了记录,我们的应用程序没有EJB - 虽然可能会在将来更改),并且我们使用Hibernate来维护我们的实体。)用于操作VOs中数据的所有业务逻辑都位于不同的类(不是EJB,只是POJO)。我的OO思想讨厌这个问题,因为我确实相信某个班的操作应该在同一个班上。所以我有一种冲动,想要将逻辑转移到相关的VO中。企业Java实体应该愚蠢吗?
我刚刚和一位在Java EE方面比我有更多经验的同事讨论过,并且他证实了愚蠢的实体至少是过去推荐的方式。但是,他最近也读过了对这种立场的有效性提出质疑的意见。
据我所知,有至少限制了什么可以是实体类内部把问题:
- 它不应该有直接依赖于数据层(例如查询代码而应进入单独的DAO)
- 如果是直接暴露于较高的层或客户端(例如,经由SOAP),它的界面可能需要被限制
是否有任何更多的有效理由不移动逻辑INT我的实体?还是考虑其他问题?
实体是VO吗? – 2010-02-25 11:06:43
@Pascal是的 - 请参阅我的更新。 – 2010-02-25 11:18:59