文档库 最新最全的文档下载
当前位置:文档库 › Spring Data在JavaEE系统中的应用与研究

Spring Data在JavaEE系统中的应用与研究

-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)

相关文档
相关文档 最新文档