springdatajpa实战.pdf
《springdatajpa实战.pdf》由会员分享,可在线阅读,更多相关《springdatajpa实战.pdf(12页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、Spring data jpa 实战一、概述.2二、配置 maven.2三、配置持久化单元.5四、配置 applicationContext.xml文件.6五、spring data jpa详解.7六、spring data jpa 1.1新特性及分页介绍.11一、概述对于我们以前实现数据操作层,我们大部分是通过手工来创建,创建的过程一般分为下面几个步骤:1.创建一个具有公共增、删、改、查及分页的基类dao 接口2.创建实现基类dao 接口及各个方法的抽象类3.创建具体的dao 层,并继承基类dao 接口4.实现具体的dao 层,继承基类的抽象类现在我们有更好的方法替代这些工作了,spring
2、 Data 家族给我们提供了一个现成的dao 层框架,这里面有不同的项目,如Spring Data JPA,Spring Data Neo4j and Spring Data MongoDB,他们的共同特点是他们给我们提供了框架代码,不再需要我们自己去实现了。而且,spring Data 能自动创建实体dao 的实现类和自定义查询。因此基于以前写得程序,我们几乎不再需要第四步骤了。在这一章我们会学到如何利用spring Datajpa 来调整我们的dao 层。我们的项目是基于maven实现的,所以首先我们将配置pom,然后我们再进入实际的仓库代码。二、配置 maven 在 maven 中的 p
3、om 中加入如下的依赖3.1.1.RELEASE3.6.10.Final1.0.3.RELEASEorg.springframeworkspring-webmvc$spring.versionorg.springframeworkspring-core$spring.versionorg.springframeworkspring-web$spring.versionorg.springframeworkspring-beans$spring.versionorg.springframeworkspring-context$spring.versionorg.springframeworksp
4、ring-aop$spring.versionorg.springframeworkspring-context-support$spring.versionorg.springframeworkspring-tx$spring.versionorg.springframeworkspring-orm$spring.versionorg.springframeworkspring-jdbc$spring.versionorg.springframeworkspring-test$spring.versionorg.springframework.dataspring-data-jpa$spri
5、ng.data.versionorg.hibernatehibernate-core$hibernate.versionorg.hibernatehibernate-entitymanager$hibernate.versionorg.hibernatehibernate-ehcache$hibernate.versionorg.slf4jslf4j-log4j121.6.1mysqlmysql-connector-java5.1.20commons-dbcpcommons-dbcp1.4 junitjunit4.10jstljstl1.2 servletapiservletapi2.4 pr
6、ovidedjavax.servlet.jspjsp-api2.2 providedorg.aspectjaspectjweaver1.6.12 三、配置持久化单元在类路径底下新建META-INF,在 META-INF中建一个persistence.xml,其内容如下:org.hibernate.ejb.HibernatePersistence!-四、配置 applicationContext.xml文件在 resources 加入 spring 的配置文件applicationContext.xml,日志配置和jdbc 配置详情请参考源码。applicationContext.xml中的内容
7、如下classpath:jdbc.properties 其中:在服务启动时,将 dao 层接口通过动态代理加入到容器管理中。即类似于我们以前配置的service然后通过组建扫描机制,加入到容器管理中。五、spring data jpa详解接下去我们来写spring data jpa的代码,让Spring Data JPA 来帮助我们完成业务逻辑。在着手写代码之前,开发者需要先下载Spring Data JPA 的发布包(需要同时下载Spring Data Commons 和Spring Data JPA 两个发布包,Commons 是 Spring Data 的公共基础包),并把相关的依赖JA
8、R 文件加入到CLASSPATH 中。首先我们来看看Spring data jpa 执行过程如下:在看上面Bean 定义的时候,其实已经明白了执行过程:1.将 JPA CRUD 规范相关的方法交给SimpleJpaRepository 这个类执行2.将特殊查询相关的交给QueryExecutorMethodInterceptor执行。主要做自定义实现的部分,method query 部分和 named query 部分。具体查询类详见下图。第二、我们来看接口类publicinterface UserDao extends JpaRepository publicvoid findByUserN
9、ame(String userName);通过上面的列子,我们来总结一下使用spring Data jpa 进行持久化开发大致需要的三个步骤:1.声明持久层的接口,该接口继承 Repository,Repository 是一个标记型接口,它不包含任何方法,当然如果有需要,Spring Data 也提供了若干 Repository 子接口,其中定义了一些常用的增删改查(CrudRepository),以及分页相关的方法(PagingAndSortingRepository),当然在我们的列子中我们实现了JpaRepository。2.在接口中声明需要的业务方法。Spring Data 将根据给定
10、的策略(具体策略稍后讲 解)来为其生成实现代码。3.在 Spring 配置文件中增加一行声明,让 Spring 为声明的接口创建代理对象。配置了 后,Spring 初始化容器时将会扫描 base-package 指定的包目录及其子目录,为继承 Repository 或其子接口的接口创建代理对象,并将代理对象注册为 Spring Bean,业务层便可以通过 Spring 自动封装的特性来直接使用该对象。对于上面的接口我们还可以有一种写法,即通过注解RepositoryDefinition(domainClass=User.class,idClass=Integer.class)publicint
11、erface UserDao publicvoid findByUserName(String userName);效果与上面通过接口实现一样。前面提到,Spring Data JPA 在后台为持久层接口创建代理对象时,会解析方法名字,并实现相应的功能。除了通过方法名字以外,它还可以通过如下两种方式指定查询语句:1.Spring Data JPA 可以访问 JPA 命名查询语句。开发者只需要在定义命名查询语句时,为其指定一个符合给定格式的名字,Spring Data JPA 便会在创建代理对象时,使用该命名查询语句来实现其功能。2.开发者还可以直接在声明的方法上面使用 Query 注解,并提供
12、一个查询语句作为参数,Spring Data JPA 在创建代理对象时,便以提供的查询语句来实现其功能。下面我们分别讲述三种创建查询的方式。根据方法名来查询,即我们刚开始给出的列子public List findByUserName(String userName);框架在进行方法名解析时,会先把方法名多余的前缀截取掉,比如 find、findBy、read、readBy、get、getBy,然后对剩下部分进行解析。并且如果方法的最后一个参数是 Sort 或者 Pageable 类型,也会提取相关的信息,以便按规则进行排序或者分页查询。在创建查询时,我们通过在方法名中使用属性名称来表达,比如
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- springdatajpa 实战
限制150内