Spring Boot 2.x实战 - 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等)

 

 

转自:https://blog.csdn.net/wiselyman/article/details/106273980

posted @ 2020-10-15 09:50  十月围城小童鞋  阅读(213)  评论(0编辑  收藏  举报