在我們的傳統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