@zhuanxu
2017-12-27T12:37:48.000000Z
字数 2961
阅读 2218
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 Commons 提供了如下的接口:
Spring Data JPA 提供了如下接口:
整个类图
这个类图是挺好,但是问题是我们怎么用呢?步骤如下:
如果我们要使用 Spring Data JPA 来实现一个数据持久层,我们需要如下的组件:
上面的依赖我们都可以通过maven来管理,来看我们的pom.xml文件:
<!-- Spring Data JPA -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Database (H2) -->
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
<!-- DataSource (HikariCP) -->
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
</dependency>
上面将我们关心的依赖都包括进来了,下一步就是具体的配置了。
第一个需要配置的是持久层,步骤如下:
我们先配置datasource,使用,spring-boot默认支持的DataSource可以在文件DataSourcePoolMetadataProvidersConfiguration
中看到,总共有4个:
## 连接配置 datasource
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.url=jdbc:h2:mem:datajpa
spring.datasource.username=root
spring.datasource.password=root
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配置:
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
@EnableJpaRepositories
class Config {}
总结下本文的内容,本文首先介绍了Spring Data JPA,指出其和JPA provider的关系,接着介绍了Spring Data Repositories的众多接口,最后给出了使用jap需要引入的依赖以及一些基本配置,下面一篇将会介绍jpa具体的使用方法。
这是 jpa 的第二篇,你的鼓励是我继续写下去的动力,期待我们共同进步。