我目前正在使用Java-EE6(GlassFish 3.1.2,MySQL Server 5.1和Netbeans 7.1.1)开发3层应用程序。
该项目目前包括3个项目:
为了在创建/修改/删除实体时更新客户端的GUI,我决定通过实现一个主题来使用JMS,其中每个客户端在启动时订阅,并且EJB容器上的消息驱动bean充当发布者。
现在我面临以下重大问题:
这是一个更与设计相关的问题&因此,问你这是否是使用Java-EE6设计3层应用程序的基本方法?
我希望尽可能避免使用DTO / DAO,以尽可能降低复杂性,并且应用程序不会产生大量网络流量。
提前感谢您的建议!
答案 0 :(得分:0)
我通过在所有层之间直接传递@Entity对象来解决问题。通过激活静态编织(使用eclipse-link作为jpa提供程序),我能够使用延迟获取来处理繁重的关系。为了仅从客户端获取特定的重要关系,我使用加载组来定义在通过网络序列化之前应该预先获取的惰性关系,这将实体与实体管理器分离。反之,将实体再次发送到服务器,我只需在服务器端Facade上使用EntityManager.merge(T)将实体恢复到托管状态。即使对于非常复杂的数据层次结构,此设计也可以正常工作。