Spring Data JPA入门学习

Spring Data JPA学习

1. 介绍

Spring Data JPA是较大的Spring Data系列的一部分,可轻松实现基于JPA的存储库。此模块处理对基于JPA的数据访问层的增强支持。它使构建使用数据访问技术的Spring支持的应用程序变得更加容易。

实现应用程序的数据访问层已经很长一段时间了。为了执行简单查询以及执行分页和审核,必须编写太多样板代码。Spring Data JPA旨在通过将工作量减少到实际需要的数量来显着改善数据访问层的实现。作为开发人员,您将编写包括自定义finder方法在内的存储库接口,Spring会自动提供实现。

  • 特征
    • 基于Spring和JPA构建存储库的先进支持
    • 支持Querydsl谓词,从而支持类型安全的JPA查询
    • 域类的透明审核
    • 分页支持,动态查询执行,集成自定义数据访问代码的能力
    • @Query引导时验证带注释的查询
    • 支持基于XML的实体映射
    • 通过引入基于JavaConfig的存储库配置@EnableJpaRepositories
  • 官网地址点击此处,文档点击此处

2. Maven依赖

父pom文件:

<parent>
    <artifactId>spring-boot-starter-parent</artifactId>
    <groupId>org.springframework.boot</groupId>
    <version>2.3.0.RELEASE</version>
</parent>

SpringBoot 整合JPA的pom:

<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.14</version>
</dependency>

<!--spring-boot-jpa-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

application.yml文件配置:

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/testdb?serverTimezone=UTC
    username: root
    password: root
  jpa:
    hibernate:
      ddl-auto: update
    show-sql: true

整合Mybatis时的pom:

<!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter -->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.1.0</version>
</dependency>

整合Mybatis时application.yml文件:

mybatis:
  mapper-locations: classpath:mapper/*Mapper.xml
logging:
  level:
    cn:
      test:
        jpa:
          dao: DEBUG

SpringJPA可以自动生成表(注意:需要先创建好数据库),这个特点可以很好的创建表结构,数据映射的时候可以减少出现字段和表的字段名不一致的情况。但是创建自定义的SQL语句比较麻烦,因此可以再整合Mybatis,自定义SQL时比较方便。

3. 关键字解读

spring.jpa.hibernate.ddl-auto的取值有四种:

  • create:每次加载hibernate,如果数据库中存在表,将所有表删除,然后重新生成表

    正常使用中千万不要这么使用,要命的。不推荐,慎用

  • create-drop:加载项目时创建,退出时删除表结构 ;如果一开始数据库没有表,启动
    项目的时候会生成表,当把项目关闭之后生成的表又会消除(也就是删除表)。即:一开始数据库中有几个表,整个流程执行结束之后,还是几个表。不推荐,慎用

  • update:只是更新数据不会更改表结构,因此如果你的表结构发生了变化,删除对应的表,或者
    删除数据库,重新启动项目,重新生成表。推荐的设置

  • validate:项目加载时,验证创建数据库表结构,这样 项目在加载之初,如果Entity
    数据库表结构不同,就会报错,这样有助于技术运维预先发现问题。

dao层接口继承Repository,泛型为Entity类型和Id类型。Repository有多种接口,我们继承该接口就可以实现CRUD操作。我用的是CrudRepository,还有其他的接口,如:JpaRepository,MongoRepository,PagingAndSortingRepository等等。

CrudRepository接口的方法有:

)

@Entity注解可以生成一张表,可以放到类上,类中的属性信息就是表的字段信息。如下:

也可以自定义方法,配合Mybatis,可以把开发简化很多。更多的操作见Spring Data JPA文档.

Spring Data JPA 入门级了。

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页