执拗者福轻,而圆融之人其禄必厚;
操切者寿夭,而宽厚之士其年必长。
故君子不言命。养命即所以立命;
亦不言天,尽人自可以回天
简介
Spring Data的宗旨是Spring环境的基础上,建立一套既有统一风格,又保留底层数据存储特性的数据访问编程模型。
Spring Data让数据访问技术(例如,关系型和非·关系型数据库,MapReduce框架及基于云的数据服务)变得更加容易。
Spring Data是一个聚合项目,包括很多子项目。
Spring Data JPA就是其中之一。
Spring Data组件
以下是Spring Data已经发布的相关组件:
Spring Data Commons
Spring Data JPA
Spring Data KeyValue
Spring Data LDAP
Spring Data MongoDB
Spring Data Redis
Spring Data REST
Spring Data for Apache Cassandra
Spring Data for Apache Geode
Spring Data for Apache Solr
Spring Data for Pivotal GemFire
Spring Data Couchbashe(社区)
Spring Data Elasticsearch(社区)
Spring Data Neo4j(社区)
这些项目中很多都是由Spring团队和对应技术的第三方公司一起开发的
通过名字,我们基本上就能知道这些组件的具体用途了。
我们不再过多介绍这些组件了,重点来讨论Spring Data JPA
主要功能特性
Spring Data JPA具有非常强大的功能和很好的易用性,其主要的功能特性如下:
丰富的数据操作和自定义对象映射抽象
基于方法名和衍生的动态查询
使用基类封装公共属性
无感知的自动审计
支持自定义数据操作
可以非常方便地与Spring Boot集成(使用JavaConfig或XML)
可以通过配置Spring MVC进行集成
跨存储持久化的实验性支持
这里我们先对Spring Data JPA有一个总体认识,然后在接下来的内容里慢慢展开
常用注解
先来熟悉一下Spring Data JPA中的常用注解,如表6-1所示。
表6-1Spring Data JPA中的常用注解
在这些注解中,一部分是JPA中自带的,一部分是Spring Data中特有的。
这里先简单了解一下它们,后面用到相应注解时,再详细讲解。
集成
经过一番介绍,我们可以动手实践一下了。
基础准备
Spring Data JPA是持久层组件,所以在使用它之前,需要为我们的程序创建一个名为springbooy的库。
当然,你也可以选择自己喜欢的名称,只需要记得将数据库连接配置成设置的名称即可。
添加依赖
添加Spring Data JPA依赖很简单,只需要一个Starter即可。
除了Spring Data JPA依赖,我们还需要添加一个MySQL连接器的依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</depenedency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime<scope>
<dependency>
添加配置
接下来需要增加一些配置,才能让我们的工程访问到数据库。
在application.yml文件中添加如下配置:
spring:
# 数据库配置
datasource:
url:jdbc:mysql://127.0.0.1:3306/springboot?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&characterEncoding=utf-8
driver-class-name:com.mysql.cj.jdbc.Driver
username:root
password:123456
# JPA配置
jpa:
hibernate:
ddl-auto:update
show-sql:true
database-platform:org.hibernate.dialect.MySQL5InnoDBialect
# Web配置
server:
port:8080
servlet:
context-path:/springboot
session:
timeout:60
数据库配置介绍如下
url:数据库地址与参数
driver-class-name:连接数据库的驱动(来自上面的mysql-connector)
username:数据库用户名
password:数据库密码
上面这4项配置比较简单,稍微有点编程经验的人一看就能明白是什么,这里就不过多介绍。
JPA配置介绍如下.
show-sql很简单,为true代表打印SQL语句,为false则代表不打印
database-platform也不难,用来1指定使用哪种MySQL存储引擎,这里我们使用InnoDB
下面详细说一下ddl-auto这个配置,它有4个值可选,具体含义如下。
create:程序每次启动都会重新创建表(程序启动时会执行d