Spring Boot 2.x实战58 - Spring Data 2 - Spring Boot下Spring Data JPA(自动配置)

2.关系数据库 - Spring Data JPA

2.1 JPA、Hibernate和Spring Data JPA

JPA是Java Persistence API的缩写,即Java持久化API。最新版的JPA 2.2为JSR-338规范也属于Jakarta EE的一部分。 JPA是规范,它对数据库的各种操作的是JPA提供者(如:Hibernate)提供的实现;我们在使用规范开发时,只需要和规范的API打交道而无需关心规范的实现。Spring Data JPA是在JPA提供者之上所做的更高界别的抽象,让对数据库的操作更简单更语义化。

2.2 环境准备
2.2.1 安装MySQL

使用docker compose安装MySQL。

stack.yml

version: '3.1'

services:

  db:
    image: mysql
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    ports:
      - 3306:3306
    environment:
      MYSQL_DATABASE: first_db
      MYSQL_ROOT_PASSWORD: zzzzzz

  adminer:
    image: adminer # 全功能数据库管理工具
    restart: always
    ports:
      - 8081:8080

执行命令:

$ docker-compose -f stack.yml up -d

打开http://localhost:8081/访问adminer。
在这里插入图片描述

2.2.2 新建项目

新建应用,信息如下:

Group:top.wisely

Artifact:learning-spring-data-jpa

Dependencies:Spring Web StarterSpring Data JPAMySQL DriverLombok

build.gradle文件中的依赖如下:

dependencies {
   implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
   implementation 'org.springframework.boot:spring-boot-starter-web'
   runtimeOnly 'mysql:mysql-connector-java'
   compileOnly 'org.projectlombok:lombok'
	 annotationProcessor 'org.projectlombok:lombok'
  //...
}

Spring Data JPA的版本由Spring Boot来维护。

2.3 Spring Boot下的自动配置

在非Spring Boot下,我们需要下面的条件才能JPA开发:

  • DataSource:用来连接数据库;
  • EntityManagerFactory:获取EntityManager和数据库进行交互;
  • PlatformTransactionManager:用来管理事务;
  • @EnableJpaRepositories:开启JPA Repository的配置;
  • @EnableTransactionManagement:开启事务管理的配置;

Spring Boot下对于Spring Data JPA主要有四个自动配置:

  • DataSourceAutoConfiguration:使用DataSourceProperties通过spring.datasource.*来自动配置DataSource
  • HibernateJpaAutoConfiguration
    • 导入HibernateJpaConfiguration,使用HibernateProperties通过spring.jpa.hibernate.*来进行Hibernate相关的配置。
    • HibernateJpaConfiguration的父类JpaBaseConfiguration使用JpaProperties通过spring.jpa.*进行JPA相关配置。自动配置了PlatformTransactionManagerEntityManagerFactory
  • JpaRepositoriesAutoConfiguration:自动使用@EnableJpaRepositories
  • TransactionAutoConfiguration:自动使用@EnableTransactionManagement
  • SpringDataWebAutoConfiguration:自动使用@EnableSpringDataWebSupport

配置数据源连接数据库:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/first_db?useSSL=false
    username: root
    password: zzzzzz
    driver-class-name: com.mysql.cj.jdbc.Driver

其他设置:

spring:
  jpa:
    show-sql: true # 控制台显示执行的sql语句
    hibernate:
      ddl-auto: update # 启动更新DDL(create、alter和drop等)

新书推荐:

我的新书《从企业级开发到云原生微服务:Spring Boot 实战》已出版,内容涵盖了丰富Spring Boot开发的相关知识
购买地址:https://item.jd.com/12760084.html

在这里插入图片描述
主要包含目录有:

第一章 初识Spring Boot(快速领略Spring Boot的美丽)
第二章 开发必备工具(对常用开发工具进行介绍:包含IntelliJ IDEA、Gradle、Lombok、Docker等)
第三章 函数式编程
第四章 Spring 5.x基础(以Spring 5.2.x为基础)
第五章 深入Spring Boot(以Spring Boot 2.2.x为基础)
第六章 Spring Web MVC
第七章 数据访问(包含Spring Data JPA、Spring Data Elasticsearch和数据缓存)
第八章 安全控制(包含Spring Security和OAuth2)
第九章 响应式编程(包含Project Reactor、Spring WebFlux、Reactive NoSQL、R2DBC、Reactive Spring Security)
第十章 事件驱动(包含JMS、RabbitMQ、Kafka、Websocket、RSocket)
第11章 系统集成和屁股里(包含Spring Integration和Spring Batch)
第12章 Spring Cloud与微服务
第13章 Kubernetes与微服务(包含Kubernetes、Helm、Jenkins、Istio)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值