一、SpringData JPA是什么
上一节学习了如何入门SpringBoot,本篇章介绍springboot对数据库是如何进行访问的。在介绍之前,有必要了解一下SpringDataJPA,这是SpringCore中的一个项目,致力于简化对数据库的访问,增强了ORM的操作。对于JPA(Java persisten API),全称为Java持久化API,是JAVAEE中的一套规范API。它推出的目的是对ORM框架进行大统一,它提供一套接口,让厂商们(如hibernate)对JPA提供实现。JPA与hibernate的关系就像JDBC与Mysql驱动、Oracle驱动一样的关系,只是它更加高度抽象,可以称之为ORM框架的接口,它的层递关系是这样的:
而SpringDataJPA是什么样子的呢?相信学过hibernate的同学一定也学过hibernate template,甚至自己实现过hibernate template。没错,SpringData JPA就很像这样一款template,把该有的东西都给你封装好,当然,其强大不止这一点点。相信学过mybatis的同学也知道,我们只需要一个mapper接口与一些mapper.xml,就可以让其代理实现的持久层。SpringDataJPA在使用的时候,也只需要声明一个接口,让其Spring以代理的形式生成Dao。对于SpringDataJPA与hibernate等ORM框架、JPA的关系是这样子的:
SpringDataJPA对类似hibernate这样的框架又做了一层封装,以便于我们编程的时候使用更方便。好了,说了那么多理论,下面就开始实践吧。
二、开始实践
1.创建maven web项目,名称为springboot-jpa,在pom.xml中导入以下依赖:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.1.RELEASE</version>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
<springBoot.groupId>org.springframework.boot</springBoot.groupId>
</properties>
<dependencies>
<!-- SpringBoot Start -->
<dependency>
<groupId>${springBoot.groupId}</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- jpa -->
<dependency>
<groupId>${springBoot.groupId}</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>${springBoot.groupId}</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<!-- mysql -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
其中SpringDataJPA核心支持依赖是spring-boot-starter-data-jpa。
2.编辑配置
待maven构建导包完成后,请在mysql中创建好数据库springboot_test,在src/main/resources中添加application.yml配置,代码如下所示: