注册通行证 用户名 密码
  • 文章投稿
  • 博客
  • 论坛
  • 设为首页
  • 加入收藏
jztop.com网络技术
  • 首页
  • | iT新闻
  • | 操作系统
  • | 组网建网
  • | 网络安全
  • | 程序开发
  • | 办公一族
  • | 工具软件
  • | 网页制作
  • | 多媒体制作
  • | 网吧技术
  • | 服务器
  • | 专题教程
Vista | 软件评测 | 系统备份 | 优化 | 进程 | 聊天 | 病毒 | Linux | 黑客 | 防火墙 | 数据库 | Web开发 | Java | Word | 游戏 | 32位开发 | 移动开发
当前位置:首页 > 程序开发 > 数据库 > Oracle 内容正文:利用EJB 3.0+JPA设计企业应用程序

利用EJB 3.0+JPA设计企业应用程序

发布时间:2006-05-12 13:24:21 来源:ibm 网友评论 0 条
  本文将介绍 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 中,免除了组件分发的需要。本文的 远程处理 一节简要介绍了为应用程序添加远程处理功能的方法。

  服务层

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

  因为简化的 PetStore 要求被限定于从数据库检索数据并把数据存储于数据库,惟一的协作者就是 DAO。真正的应用程序能够调用 Web 服务,通过 RMI/IIOP 或资源适配器访问其他应用程序,并生成电子邮件消息等。所有此类型的功能都需要其他协作者支持。

  可通过 @EJB 或 @Resource 注释注入协作者(如清单 1 所示)或通过 @PostConstruct 方法注入协作者(如清单 2 所示):

  清单 1. 使用 @EJB 注入协作者

 @EJB(beanName = "AccountDao") AccountDao accountDao;

  清单 2. 使用 @PostConstruct 注入协作者

 MessageSource messageSource; @PostConstruct public void init() {    messageSource = new MessageSourceImpl("exceptions"); } 

  选择 bean 实现类的测试策略的主要因素是类完全依赖协作者来提供服务。这意味着类和协作者的交互作用需要被验证。正如您在 测试 一节看到的,模仿对象方法完全满足该目标。

  数据访问层

  数据访问层被设计为一系列粗粒度的 DAO。DAO 被实现为无状态会话 bean,一个 bean 对应一个逻辑域:AccountDao、OrderDao 和 ProductDao。

  每个 bean 都要把实体管理器注入到其中:

 @PersistenceContext(unitName = "manager1") protected EntityManager em; 

  这是应用程序中 持久性调用类(persistence-aware) 最多的层。它广泛使用全新的 Enterprise JavaBeans Query Language(EJB QL)。所有持久性相关的行动都在该层发生,例如:

 profile = (UserProfile) em.createQuery(    "from UserProfile up where up.login = :login").setParameter(    "login", login).getSingleResult(); 

  下面是另一个例子:

 em.persist(account); 

  事实上这些类是持久性调用类(persistence-aware),需要一种容器内测试策略,这将在 测试 一节进行描述。

 1/2    1 2 ›› ›|
相关文章
  • JAVA篇:EJB 3.0开发指南之依赖注入
  • J2EE应用程序中SQL语句自动构造方法
  • 用J2SE1.5建立多任务的Java应用程序
  • 可扩展的Java应用程序开发模式
  • J2ME应用程序内存优化三招
【评论】【收藏本文】【打印】【关闭】
上一篇文章:用J2ME开发企业级无线应用
下一篇文章:发现 Eclipse 中未解析的插件依赖性
讨论区
查看
已有 0 位对此新闻感兴趣的网友发表了看法
匿名发表
注册通行证 登陆
图文阅读推荐
Atlas快速入门之实战Atlas
Atlas快速入门之实战Atlas
.net页面间的参数传递简单实例
.net页面间的参数传递简单实例
推荐阅讯
  • J2ME中多线程网络连接编程的分析
  • Oracle 10g第2版新特性之性能特性
  • 监控Oracle数据库的常用shell脚本
  • WEB2.0生死大考 当网络言论被诉名誉侵权
  • Ruby程序快速入门之方法存取控制
  • Oracle SQL性能优化系列讲座之三
  • .NET下基于组件的分布式系统动态配置
  • Web2.0公司所要做的就是撕掉Web2.0标签
  • Eclipse 的历史、现状和未来
  • Qrunner让程序运行得更加快速
阅读排行
  • 1..net页面间的参数传递简单实例
  • 2.VC++与Matlab混合编程之引擎操作详解
  • 3.Oracle数据库数据对象分析
  • 4.Eclipse3.2+Tomcat5.5.17+Oracle9配置
  • 5.Oracle数据库中索引的维护
  • 6.在Oracle的网络结构中解决连接问题
  • 7.Oracle数据安全面面观
  • 8.Oracle数据库的ORA-00257故障解决过程
  • 9.Oracle数据库备份与恢复的三种方法
  • 10.Oracle与SQL Server在企业应用中的比较
专题教程
  • 大话G游 专题:手机病毒揭密
  • ARP攻击防范与解决方案 路由故障处理手册
  • Picasa中文版_Picasa教程 专题:清除流氓软件
  • Firefox专题 seo搜索引擎优化专区
  • 重装Windows必知的事情 装机之必备软件大行动
病毒专杀栏
  • 杀毒软件反被病毒杀 连"救命"都不能喊
  • 金山ARP防火墙
  • 还原卡神话破灭“机器狗”病毒来势汹汹
  • cctv经济半小时:你的手机现在安全吗?
  • 新挂马方式开始流行 ARP挂马称雄局域网
  • 木马和病毒清除的通用解法
  • IP地址不再冲突 查找ARP攻击者元凶
  • 教你几招识别和防御Web网页木马
  • 分析:封杀BT只是暂时的止痛药
  • QQ爆危险漏洞,“QQ游戏邀请大盗”邀请你玩病
关于我们 | 诚聘英才 | 联系我们 | 版权声明 | 网站大事 | 网站地图 | 意见建议
CopyRight 2005-2007 Jztop.Com 版权所有 未经许可 请勿转载