利用EJB 3.0的JPA设计企业应用程序(1)

发表于:2007-06-11来源:作者:点击数: 标签:
本文将介绍Java Platform,Enterprise Edition(Java EE 5)的一种设计方法,它利用了Enterprise JavaBeans(EJB) 3.0 新的Java Persistence API (JPA)。JPA 提供了一种标准的对象关系映射 解决方案 ,该解决方案避免了依赖第三方框架(如 Hibernate)。您将看

本文将介绍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的电子交易应用程序,它实现以下用例

MILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.0pt; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">◆浏览产品

查找产品

维护账户

维护购物车

创建订单

本应用程序被设计为具有三个主要逻辑层的多层Java EE应用程序:

表示层(并非本文的重点)使用 Struts 框架。

服务层是一种简单的服务facade,将所有工作委托给其协作者。服务层的目的是分离服务供应与服务实现。

数据访问层是一系列作为无状态会话bean实现的粗粒度Data Aclearcase/" target="_blank" >ccess Objects (DAO)。出于持久性的需要,它们都依赖 Java 持久性实体管理器。

应用程序域模型由EJB 3.0实体bean表示并用于层间的通信。当域对象离开数据访问层时,它与实体管理器脱离。当重新进入数据访问层时,它需要重新连接到实体管理器。

注释似乎是Java 5的一个广泛采用的特性,JPA也不例外。注释可用于指定OR映射——在dW文档和教程中您经常可以看到——而PetStore应用程序出于相同目的使用它们。然而值得一提的是您还能通过映射文件的方式指定OR映射。本文稍后的OR映射 一节将探讨并比较这两种可选方式。

我在Jboss应用服务器开发并部署PetStore应用程序(参见 参考资料)。我使用商用数据库完成大多数开发工作并将应用程序后端移植到 PostgreSQL数据库(OR映射 一节包含了关于使用JPA时您应该了解的数据库迁移的潜在影响的讨论)。

本案例分析的目的之一是符合设计标准,允许高度可测试的实现。如 测试 一节所见,您能够使用一系列测试技术来测试PetStore应用程序。

PetStore 应用程序充分利用了这一事实:它是规则的 Web 应用程序。主要优点是所有层能够运行在相同的 JVM中,免除了组件分发的需要。本文的 远程处理 一节简要介绍了为应用程序添加远程处理功能的方法。

服务层

服务层被设计为服务facade。它由PetStoreService这一无状态会话bean实现。Bean要完全依靠其协作者来提供Web服务。


共5页: 1 [2] [3] [4] [5] 下一页

原文转自:http://www.ltesting.net

评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
...