我目前正在使用Java-EE6(GlassFish 3.1.2,MySQL Server 5.1和Netbeans 7.1.1)開發3層應用程序。Java-EE6:如何設計在各層之間傳遞的@Entity?
目前該項目包括3個項目:
- 企業應用程序/ EJB的:外牆控制數據庫
- 的Java類庫的實體:@Entity註解類,代表了數據庫模型(該項目服務器資源的JNDI查找(以EJB的遠程訪問)
在創建/修改/刪除實體時更新客戶端的GUI我決定通過實現一個Topic來使用JMS,其中每個客戶端在啓動時訂閱並且EJB容器上的消息驅動bean用作發佈者。
現在我面臨着以下重大問題:
- 我連着生命週期監聽器(@PostUpdate等),然後應該發佈更新消息訂閱的客戶機的實體對象。實體類駐留在class-lib項目中,而發佈者駐留在EE-app中。問題是,EE-app引用了class-lib項目,反之則不然(因爲循環項目引用是不允許的)。因此實體類中的生命週期回調方法沒有對EE-app中消息驅動的發佈bean的引用。
這是一個比較與設計有關的問題&這樣問你,如果這是基本設計與Java-EE 6的3層應用程序的正確方法?
如果可能的話,我希望避免DTO/DAO,以儘可能降低複雜性,並且應用程序不會產生沉重的網絡流量。
感謝您的提前提前!
你的意思是說,你發送@ Entity到胖客戶端,離開EJB服務器上下文嗎?但由於關係是代理,因此這些實體是不可序列化的,您如何設法在沒有DTO的情況下做到這一點? – edutesoy 2012-10-24 08:51:31