• Spring Boot 2.x实战


    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

  • 相关阅读:
    C++11特性
    DBC文件小结
    关于宏定义
    CentOS 6.5下Zabbix的安装配置
    CentOS下搭建LAMP环境详解
    VS2010中汉字拷贝到Word出现乱码问题解决
    DLL注入
    数组赋值
    CDC的StretchBlt函数载入位图时图片失真问题
    2019年下半年Web前端开发初级理论考试
  • 原文地址:https://www.cnblogs.com/pypua/p/13818840.html
Copyright © 2020-2023  润新知