摘要
Java Persistence API(JPA)和Spring Framework的2.0版本已经引起开发人员广泛的兴趣。本文将考察如何将Spring 2.0和JPA与BEA WebLogic Server一起使用。具体来说,我们将使用Spring和JPA对WebLogic Server的病历示例应用程序进行更新。本文将展示Spring和JPA这个功能强大的组合如何形成基于POJO的简化应用架构的基础。使用的技术主要包括WebLogic Server 9.1、Spring 2.0和Kodo JPA。
简介
病历示例应用程序(MedRec)是一个综合应用程序,它演示了如何在WebLogic Server中使用多种技术。这些技术包括开源技术(如Spring和Struts)以及WebLogic Server所使用的技术(如Web services、JSP、消息驱动bean和JDBC)。
本文描述在MedRec更新版本中Java Persistence API(JPA)是如何与Spring Framework配合使用的。本文的一个重要目的是向开发人员展示Spring 2.0、WebLogic Server 9.1和Kodo 4.0如何一起使用。通过阅读本文,开发人员将获得对有关使用JPA和Spring 2.0版本中新增的JPA支持的了解。本文还将讨论在企业应用的多个层次中重用JavaBean(POJO)时可能出现的挑战。重用是基于Spring和JPA的应用架构所带来的重要获益之一。
对于不熟悉Java Persistence API的人来说,JPA是一个指定如何将Java对象保存在数据库中的新增简化API。JPA正在作为EJB 3.0(JSR 220)的一部分而被开发,因为它将取代EJB 2.x实体bean,但是它在J2EE和J2SE应用程序中均可使用。JPA的一个最重要的特性是:它是基于POJO的。JPA还使用Java 5.0注释来简化指定从Java对象到关系数据库的映射的方式。BEA已经宣告建立OpenJPA(一个很快就可用的基于Kodo的开源项目),但是您现在就可以开始使用Kodo 4.0的早期访问版本。
本文将从对Spring中的POJO和数据访问的概述开始。接下来概述MedRec的架构,并对MedRec数据访问层进行更详细的描述。然后我们将详细考察JPA persistent类,并讨论它们需要遵循的设计模式。最后,我们将介绍Spring和Kodo JPA的XML配置,以便将所有内容联系起来。MedRec的完整源代码可随本文下载。
Spring中的POJO和数据访问
Spring Framework最著名的优点可能是简化了的业务组件开发。熟悉Spring的人都知道,通过使用反向控制(IoC)和面向方面编程(AOP),Spring允许开发人员编写功能强大的业务组件,这些业务组件仍然是常规JavaBean或POJO (Plain Old Java Object)——正如它们通常被称作的那样。
对于需要访问数据库的企业应用程序,Spring也提供了一个框架来简化对封装持久化数据访问的数据访问对象(DAO)的创建。Spring的POJO功能还涉及数据访问领域,因为它们查询和修改的数据访问对象和域模型对象均可以是POJO。
Spring对POJO模式的使用具有一些重要的实际优点。首先,就业务组件而言,POJO减轻了开发人员为实现应用程序而必须做的工作。它不仅减少了代码行,而且由于这些代码本身就是标准Java,所以它们更简单。其次,使用POJO意味着应用程序调用数据访问对象的其余代码不依赖于特定的持久化技术。例如,如果应用程序正在使用原始JDBC或JDO,那么使用POJO则会使转换到使用JPA作为持久化解决方案的行为相对容易。
第三个优点涉及域模型对象本身。在MedRec中,域模型对象代表诸如病人、医生和处方之类的实体。由于这些类是POJO,而且不像传统的EJB 2.x实体bean那样依赖于特定的持久化环境,所以这些类可以在多个应用程序代码需要访问域模型的层次中重用。在MedRec中,这包括JSP使用域模型对象呈现用户界面的Web层,以及使用域模型类作为参数并将类型返回给Web服务方法的Web服务层。
| 论坛热门帖子: | [lch203] 写得蛮好的linux学习笔记(10-21) [黑马制造] 学习java的30个目标(10-19) [笑傲股林] 做测试半年了,有点迷茫,应该再学些什么提高自己的测试水平和测试能力呢?(10-19) [udp8589] 大家用google的来吱一声? 用百度的~~也来报道下?(10-18) [沂偌掳兆] 本人总结的一些认为C++比较经典的书籍,希望对大家有用(10-18) |
| TAG标签: | 使用 结合 JPA Spring Patient 对象 持久 我们 访问 方法 |
注册
个人空间
