[关闭]
@zhuanxu 2017-12-27T04:37:48.000000Z 字数 2961 阅读 821

spring data jpa 系列教程二:使用入门

spring-data-jpa-系列教程


Spring Data JPA 介绍

什么是Spring Data JPA?
首先 Spring Data JPA 不是 JPA provider,而是在 JPA provider 之上又抽象了一层,目的是更便捷的使用 JPA,如果我们使用 Spring Data JPA , 那一般会包括下面3层:

Spring Data JPA :提供创建JPA repository的接口
Spring Data Commons:提供Spring Data 项目所共有的基础设施。
JPA Provider:Java Persistence API 的具体实现。

spring data jap 使用了上一课介绍的repository-pattern模式,可以帮我们省去好多重复的数据库操作逻辑,下面具体分析下 repository 接口。

Spring Data Repositories

Spring Data Commons 提供了如下的接口:

Spring Data JPA 提供了如下接口:

整个类图

这个类图是挺好,但是问题是我们怎么用呢?步骤如下:

  1. 创建一个 repository 接口,继承自Spring Data提供的 repository 接口
  2. 在 repository 接口中新增query方法
  3. 通过spring 容器将 repository 接口的实现自动注入

Spring Data JPA 依赖组件

如果我们要使用 Spring Data JPA 来实现一个数据持久层,我们需要如下的组件:

上面的依赖我们都可以通过maven来管理,来看我们的pom.xml文件:

  1. <!-- Spring Data JPA -->
  2. <dependency>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter-data-jpa</artifactId>
  5. </dependency>
  6. <dependency>
  7. <groupId>org.springframework.boot</groupId>
  8. <artifactId>spring-boot-starter-web</artifactId>
  9. </dependency>
  10. <!-- Database (H2) -->
  11. <dependency>
  12. <groupId>com.h2database</groupId>
  13. <artifactId>h2</artifactId>
  14. <scope>runtime</scope>
  15. </dependency>
  16. <!-- DataSource (HikariCP) -->
  17. <dependency>
  18. <groupId>com.zaxxer</groupId>
  19. <artifactId>HikariCP</artifactId>
  20. </dependency>


上面将我们关心的依赖都包括进来了,下一步就是具体的配置了。

Configuration

配置数据持久层

第一个需要配置的是持久层,步骤如下:

  1. 配置 properties 文件
  2. 配置 datasource bean
  3. 配置 entity manager factory
  4. 配置 transaction manager bean
  5. 开启 transaction management
  6. 配置 Spring Data JPA

我们先配置datasource,使用,spring-boot默认支持的DataSource可以在文件DataSourcePoolMetadataProvidersConfiguration中看到,总共有4个:

  1. ## 连接配置 datasource
  2. spring.datasource.driver-class-name=org.h2.Driver
  3. spring.datasource.url=jdbc:h2:mem:datajpa
  4. spring.datasource.username=root
  5. spring.datasource.password=root
  6. spring.datasource.type=com.zaxxer.hikari.HikariDataSource

还有一个DataSource的方式是,当我们想要引用别的第三方实现,方式如下:

在使用持久化工具的时候,一般都有一个对象来操作数据库,在原生的 Hibernate 中叫做 Session,在 JPA 中叫做 EntityManager,在 MyBatis 中叫做 SqlSession,通过这个对象来操作数据库。

在此处集成中LocalContainerEntityManagerFactoryBean将会在HibernateJpaAutoConfiguration中创建返回,而transaction management也是在其中返回

在 Spring Boot 项目中,如果在 POM 文件中引入了spring-boot-starter-data-jpa依赖,则无需 Java 配置或者 XML 配置,否则通过下面的java配置:

  1. import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
  2. @EnableJpaRepositories
  3. class Config {}

总结

总结下本文的内容,本文首先介绍了Spring Data JPA,指出其和JPA provider的关系,接着介绍了Spring Data Repositories的众多接口,最后给出了使用jap需要引入的依赖以及一些基本配置,下面一篇将会介绍jpa具体的使用方法。

这是 jpa 的第二篇,你的鼓励是我继续写下去的动力,期待我们共同进步。
这个时代,每个人都是超级个体!关注我,一起成长!

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注