-278-Spri ng Data在Java EE系统中的应用与研究
西安邮电大学经济与管理学院 刘志鹏 卫 晨
【摘要】本文介绍了Spring DATA框架的功能和特点,将Spring DATA框架应用到Java EE系统中,简化Java EE系统持久层的设计和开发,从而提高Java EE系统开发效率。【关键词】Spring DATA;Java EE;JPA;Spring MVC
1.引言
Java EE(Java Platform,Enterprise Edition)是sun公司推出的企业级应用程序版本。基于Java EE技术的可以方便、快速地建立融合 Internet 技术的多层结构的分布式企业应用。符合JAVA EE规范的系统架构包含三种核心构件:
(1)业务服务层构件,完成具体业务逻辑的处理,并为表现层构件提供服务;
(2)表现层构件,实现接受用户请求,返回处理结果的人机界面;
(3)数据访问层构件,通过访问后台数据库完成系统数据的持久化存储。
Java EE 5版本充分吸收了ORM 的思想,开始使用JPA(Java Persistence API)来操作数据库,开发者可以使用JPA来开发数据访问层的业务逻辑。开发数据访问层的业务逻辑在Java EE系统开发过程中将是一件非常重要和复杂的过程。Spring Data可以把程序员从大量重复、繁杂的数据库层操作中解放出来。
本文介绍 Spring DATA 框架的体系结构,将Spring DATA JPA集成到Java EE系统中用来简化数据访问层业务逻辑的开发。
2.Spring DATA框架介绍
Spring Data作为SpringSource的其中一个父项目,旨在统一和简化对各类型持久化存储, 而不拘泥于是关系型数据库还是NoSQL 数据存储。spring data主要是对持久层进行简化,主要体现在只要声明持久层的接口,无需编写具体的逻辑实现。这个原理是根据方法名字进行解析,从而获取这个方法要执行的操作。
Spring Data组件的目的在于统一和简化对各类型持久化存储的访问,以及对新的数据访问技术提供支持,如非关系型数据库,map-reduce框架,以及基于云的数据服务等。Spring Data包含许多子项目,一一对应到具体的数据库,目前提供了对十余种数据访问技术的支持,主要有JPA、JDBC Extension、Redis、MongoDB、HBase、Neo4j、Apache Hadoop、GemFire等。无论是哪种持久化存储,Spring Data都提供了统一的数据访问层作为数据持久化的顶层抽象,其基本的接口是Repository,派生出 CrudRepository,PagingAndSortingRepository等接口,用于声明领域对象的CRUD(创建、查询、更新、删除)操作、排序和分页方法等通用功能。
3.Spring DATA JPA技术
3.1 Spring DATA JPA和Spring MVC的集成
要在Java EE项目中要使用Spring DATA JPA,首先需要引入相关Spring DATA JPA 的jar包,包括:spring-data-commons和spring-data-jpa。其次,需要在Spring的applicationContext.xml文件中添加以下配置,以使 Spring 能够扫描到需要实现的持久层接口,并为其创建代理对象:
entity-manager-factory-ref=”entity ManagerFactory” transaction-manager-ref=”transaction Manager” /> 3.2 核心接口 Spring DATA JPA包括以下几个核心接口: (1)Repository Repository是Spring Data的一个核心接 口,它不提供任何方法,开发者需要在自己定 义的接口中声明需要的方法。 (2)CrudRepository CrudRepository继承Repository,增加了 基本的CRUD功能。 (3)PagingAndSortingRepository PagingAndSortingRepository继承 CrudRepository,新增了以下两个方法,具有 分页查询和排序功能。 (4)JpaRepository JpaRepository继承PagingAndSorting- Repository,针对JPA技术提供的接口。 (5)JpaSpecificationExecutor JpaSpecificationExecutor可以执行原生 SQL查询。 3.3 数据访问接口定义 根据业务的需要,在数据访问构件接口中 声明需要的方法,Spring DATA将根据给定的 策略来为其生成实现代码,对于开发人员只需 要知道如何定义方法,而不需要实现方法,方 法由Spring DATA JPA来实现。 Spring DATA根据用户定义的方法名称来 判断该方法需要实现什么业务逻辑。Spring DATA在进行方法名解析时,会先把方法名多余 的前缀截取掉,比如 find、findBy、read、 readBy、get、getBy,然后对剩下部分进行解 析。并且如果方法的最后一个参数是 Sort 或 者 Pageable 类型,也会提取相关的信息,以 便按规则进行排序或者分页查询。 在创建查询时,我们通过在方法名中使用 属性名称来表达,比如 findByName (String n a m e)。框架在解析该方法时,首先剔除 findBy,然后对剩下的属性进行解析。 在查询时,通常需要同时根据多个属性 进行查询,且查询的条件也格式各样(大于小 于等于某个值、在某个范围、在什么值之间等 等),Spring Data JPA 为此提供了一些表达 条件查询的关键字。例如:And等价于SQL中的 and关键字,比如 findByUsernameAndPassword (String user,Striang pwd)。 4.Spring Data JPA应用 利用Spring MVC、Spring Data搭建Java Web项目。 4.1 表现层 项目的表现层使用Spring MVC框架,用户与 浏览器交互的请求首先发送到 DispatchServlet 中,DispatchServlet 主要用于分发请求, 它定义在 web.xml 中,他定义了一个名为 system的 DispatchServlet。它根据在system- servlet.xml中定义的页面构件与 Servlet 控 制构件的对应关系,将请求转发到相应的控制 构件进行处理。 4.2 控制层 业务层构件一般被控制层构件调用,控制 层构件以接口的形式声明所需的业务层构件的 服务,由Spring框架根据system-servlet.xml 中的配置实例化业务层构件,并注入到控制层 中。 4.3 业务层 业务层构件一般被控制层构件调用, Spring会实例化业务层构件, 并将其注入到 控制层构件中,如下所示: 4.4 数据访问层 数据访问层构件由业务层构件调用,这 里使用Spring Data JPA来实现数据访问层, Spring框架会为每一个实现了Spring Data接口 的interface创建代理对象,并将代理对象注 入到业务层构件中。如下所示: 5.结论 本文在分析了Spring Data框架的功能和 特点,通过对Spring Data和Java EE系统的研 究,将Spring MVC与Spring Data JPA整合,建 立了一个轻量级的Java EE Web系统。该系统 利用Spring Data JPA使得开发人员不需要实 现数据访问层的业务逻辑,只需要根据Spring Data的规则创建接口即可,不需要对接口进行 实现,减少了大量工作量,减少项目开发时 间,增强了系统的稳定性,提高了开发效率。 参考文献 [1]郝佳.Spring源码深度解析[M].人民邮电出版社,2013. [2](美)波拉克.Spring Data:企业级Java的现代数据访问技 术[M].东南大学出版社,2013. [3](美)拉德(Ladd,S.).深入解析Spring MVC与Web Flow[M].人民邮电出版社,2008. [4]计文柯.Spring技术内幕(第2版)[M].机械工业出版 社,2012. 基金项目:西安邮电大学校青年教师科研基金项目 (项目编号:ZL2014-49)。 作者简介:刘志鹏(1985—),男,陕西西安人,硕 士,研究方向:煤炭企业供应链电子商务、物流信息 系以及集成供应链系统。 Spring Data在Java EE系统中的应用与研究 作者:刘志鹏, 卫晨 作者单位:西安邮电大学经济与管理学院 刊名: 电子世界 英文刊名:Electronics World 年,卷(期):2014(16) 参考文献(4条) 1.郝佳.Spring源码深度解析[M].人民邮电出版社,2013. 2013 2.波拉克.Spring Data:企业级Java的现代数据访问技术[M].东南大学出版社,201 3. 2013 3.拉德(Ladd,S.).深入解析Spring MVC与Web Flow[M].人民邮电出版社,2008. 2008 4.计文柯.Spring技术内幕(第2版)[M].机械工业出版社,2012. 2012 引用本文格式:刘志鹏.卫晨Spring Data在Java EE系统中的应用与研究[期刊论文]-电子世界 2014(16)