利用EJB 3.0的JPA设计企业应用程序 - 编程入门网
利用EJB 3.0的JPA设计企业应用程序时间:2011-05-20 Borys Burnayev本文将介绍Java Platform,Enterprise Edition(Java EE 5)的一种设计方法 ,它利用了Enterprise JavaBeans(EJB) 3.0 新的Java Persistence API (JPA) 。JPA 提供了一种标准的对象关系映射解决方案,该解决方案避免了依赖第三方 框架(如 Hibernate)。您将看到示例应用程序的详细内容,其中验证了本方法 并阐明关键设计决定。 期待已久的下一版本Java EE 5即将发布。Java EE 5许多新功能都包含经过修 补的EJB架构,其突出特性之一是JPA。由于具有容器内和容器外持久性选项,JPA 为 J2EE 架构师带来一系列全新设计选择。本文将着重介绍容器内应用程序的设 计,此类应用程序依赖EJB容器提供企业服务,如事务处理和安全性。 我将使用您熟悉的PetStore应用程序进行测试,以证明JPA的功能以及它如何 向传统J2EE设计模式发起挑战。本应用程序比较琐碎,所以不提供详尽的实现细 节。我将用代码摘录对设计注意事项进行说明。本文假设您熟悉EJB 3.0基本概念 和对象关系(OR)映射基本概念。 设计概述 示例PetStore应用程序是基于Web的电子交易应用程序,它实现以下用例: ◆浏览产品 ◆查找产品 ◆维护账户 ◆维护购物车 ◆创建订单 本应用程序被设计为具有三个主要逻辑层的多层Java EE应用程序: ◆表示层(并非本文的重点)使用 Struts 框架。 ◆服务层是一种简单的服务facade,将所有工作委托给其协作者。服务层的目 的是分离服务供应与服务实现。 ◆数据访问层是一系列作为无状态会话bean实现的粗粒度Data Access Objects (DAO)。出于持久性的需要,它们都依赖 Java 持久性实体管理器。 应用程序域模型由EJB 3.0实体bean表示并用于层间的通信。当域对象离开数 据访问层时,它与实体管理器脱离。当重新进入数据访问层时,它需要重新连接 到实体管理器。 注释似乎是Java 5的一个广泛采用的特性,JPA也不例外。注释可用于指定OR 映射——在dW文档和教程中您经常可以看到——而PetStore应用程序出于相同目 的使用它们。然而值得一提的是您还能通过映射文件的方式指定OR映射。本文稍 后的OR映射 一节将探讨并比较这两种可选方式。 我在Jboss应用服务器中开发并部署PetStore应用程序(参见 参考资料)。我 使用商用数据库完成大多数开发工作并将应用程序后端移植到 PostgreSQL数据库 (OR映射 一节包含了关于使用JPA时您应该了解的数据库迁移的潜在影响的讨论 )。 本案例分析的目的之一是符合设计标准,允许高度可测试的实现。如 测试 一 节所见,您能够使用一系列测试技术来测试PetStore应用程序。 PetStore 应用程序充分利用了这一事实:它是规则的 Web 应用程序。主要优 点是所有层能够运行在相同的 JVM中,免除了组件分发的需要。本文的 远程处理 一节简要介绍了为应用程序添加远程处理功能的方法。 利用EJB 3.0的JPA设计企业应用程序(2)时间:2011-05-20 Borys Burnayev服务层 服务层被设计为服务facade。它由PetStoreService这一无状态会话bean实现 。Bean要完全依靠其协作者来提供Web服务。 因为简化的PetStore要求被限定于从数据库检索数据并把数据存储于数据库, 惟一的协作者就是DAO。真正的应用程序能够调用Web服务,通过 RMI/IIOP或资源 适配器访问其他应用程序,并生成电子邮件消息等。所有此类型的功能都需要其 他协作者支持。 可通过@EJB或@Resource注释注入协作者(如清单 1 所示)或通过 @PostConstruct方法注入协作者(如清单 2 所示): 清单 1. 使用 @EJB 注入协作者
清单 2. 使用 @PostConstruct 注入协作者
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |