快速业务通道

利用EJB 3.0的JPA设计企业应用程序 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
了它所带来的不便。从本质上 讲,此方法牵涉应用程序的两个逻辑层:域模型和映射信息。因为这两个层是分 散的,所以这两个层需要使用不同技术进行单独测试。元数据方法本身不会影响 层的可测试性。更确切的说,元数据方法使这两个层好像只是一个层,由于受一 系列因素的影响,这可能会引起问题。

影响映射方法选择的一个因素是项目小组结构。在只有少数开发人员参与的小 型项目中,表的数量很少(一般说来少于 100 个表)而且没有专职的映射人员, 因为通常使用注释会更加快速,所以把注释方法看作定义映射也许是最佳选择。 对于拥有专职映射人员或映射小组的中型和大型项目来讲,使用映射文件的方法 才是更好的选择。该方法可以降低资源争用并使开发过程具有另一种自由度。基 于元数据的映射方法证实是 PetStore应用程序更加节省时间的方法。

OR映射层的目的是使其余应用程序免受底层数据库变更的影响。当把PetStore 应用程序后端迁移到PostgreSQL时,无需对映射层作出任何变更。这可能要归结 于这一事实:原始数据库和PostgreSQL这两者均支持序列,因此主键生成策略保 持完好。一般情况下,您应该对与对象ID处理相关的映射区域进行重写。

对映射的全面测试覆盖极为重要。必须覆盖所有关系映射以确保对获取行为和 过渡持久性进行测试。您能够利用容器外使用的JPA来执行该任务(将在下一节进 行详细介绍)。

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

时间:2011-05-20 Borys Burnayev

测试

服务层设计的关键要素是,关注与底层的协作以提供请求的服务。这需要考虑 到使用动态模仿对象的可靠测试策略。我使用EasyMock框架来实现测试方法。

DAO层具有强大的数据库内聚力。这就是可靠测试需要某类容器内策略和数据 库访问的原因。尽管这对于远程EJB很容易,还是需要考虑适合本地bean的有意义 的方法。此处令人困扰的因素是:

◆需要容器内测试 facade

◆域对象是非连续的,所以全部验证需要发生在容器内。

JBoss Embeddable EJB3容器(撰写这篇文章时尚处于测试版阶段)被证实是 更适当的选择。因为能够从单元测试启动JBoss Embeddable EJB3容器,这样所有 代码都运行在同一JVM中。使用可嵌入容器的容器内测试可实现它的目标,但过程 比较缓慢,因为容器启动时间就需要大概30秒。这种问题可能是由较早的产品状 态造成的,可通过合理的配置改进。

我采用 POJT 对域模型类的业务方法进行测试。不需要其他测试技术,况且其 他测试技术不适合这些类。

OR映射是一个需要穷举测试覆盖的主要层。该层对数据库非常敏感,所以该层 不能应用模仿对象或POJT技术。但是,您可以利用JPA的容器外功能。我就使用这 种策略来测试PetStore或OR映射层。

您需要牢记测试中的测试关联和过渡持久性行为的重要性。这样您才能及早注 意到获取类型的变更或级联类型值的变更,并采取适当的措施。

远程处理

PetStore应用程序设计的关键特性是它的本地特性。使应用程序的所有逻辑层 运行在同一JVM中,这种方法具有很多优点。有关该主题的详细讨论,请参阅 Expert One-on-One J2EE Development without EJB。

不过,应当说明的是:通过远程处理 facade,您可以轻松向应用程序添加远 程处理功能。远程处理facade(而不是我在前面描述的服务facade)公开了一个 远程界面,它具有两个职责:进行域模型和顺序数据传输对象(DTO)之间的相互 转换和在服务facade上调用适当的方法。

使用远程无状态会话bean能够实现本应用程序。唯一障碍是创建其他DTO层和 进行它们与域模型之间相互转换。然而您需要它来确保实现整洁的界面以及与远 程客户机的松散耦合。

结束语

EJB 3.0和JPA毫无疑问将是Java EE 5的主要卖点。在某些领域中,它们给正 常的Java社区带来竞

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号