Spring Data JPA
让我们来了解一下 Spring Data JPA,以及它与 H2 数据库的配置和集成。
什么是 Spring Data JPA?
Spring Data JPA 通过通用仓库(Repository)提供基于 JPA 的数据访问层。只需在数据访问对象(DAO)中实现一个 Repository 接口,该 DAO 即可具备 CRUD 功能、分页(将大量响应结果划分为称为“页”的小数据块,并支持按顺序在页面间跳转)以及排序能力。
因此,使用 Spring Data JPA 可以大幅减少样板代码,创建基础数据访问层所需的配置也更少。
环境搭建
我们快速回顾一下数据库集成所需的依赖项。
要在我们的 Spring Boot 应用 todo 中使用 Spring Data JPA,首先需要在 build.gradle 文件中添加 spring-boot-starter-data-jpa 依赖。此外,为了使用数据库引擎,还需添加 H2 依赖。
1plugins { 2 id 'org.springframework.boot' version '2.6.2' 3 id 'io.spring.dependency-management' version '1.0.11.RELEASE' 4 id 'java' 5} 6 7group = 'io.educative' 8version = '0.0.1-SNAPSHOT' 9sourceCompatibility = '1.8' 10 11repositories { 12 mavenCentral() 13} 14 15dependencies { 16 implementation 'org.springframework.boot:spring-boot-starter-data-jpa' 17 implementation 'org.springframework.boot:spring-boot-starter-validation' 18 implementation 'org.springframework.boot:spring-boot-starter-web' 19 compileOnly 'org.projectlombok:lombok' 20 runtimeOnly 'com.h2database:h2' 21 annotationProcessor 'org.projectlombok:lombok' 22 testImplementation 'org.springframework.boot:spring-boot-starter-test' 23} 24 25test { 26 useJUnitPlatform() 27}
H2 数据库配置
本节我们将详细探讨在 todo 应用中 H2 数据库的设置与配置。
H2 的配置
由于我们已在 build.gradle 中添加了 H2 数据库引擎,接下来讨论几个 spring.datasource 属性,用于配置数据库 URL 和凭证信息。
查看 application.properties 文件内容如下:
1spring.datasource.url=jdbc:h2:~/testdb 2spring.datasource.driverClassName=org.h2.Driver 3spring.datasource.username=sa 4spring.datasource.password=password 5spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
或者,也可以使用 application.yml 来进行类似的 Spring 配置。
1spring: 2 datasource: 3 url: jdbc:h2:~/testdb 4 username: sa 5 password: password 6 driverClassName: org.h2.Driver 7 jpa: 8 database-platform: org.hibernate.dialect.H2Dialect
为简化本课程内容,我们选择集成 H2 数据库引擎,为 todo 应用提供内存数据源。当然,也可以通过引入相应的数据库连接器依赖,集成 MySQL 或 PostgreSQL 等其他数据库。
H2 控制台
完成 H2 数据库的配置后,可以重启应用并连接数据库。作为开发过程中非常实用的一项附加功能,H2 嵌入式数据库还提供了一个基于 Web UI 的内置控制台,可通过浏览器直接访问数据库。
我们可以通过在 application.properties 或 application.yml 中设置 spring.h2.console.enabled 属性来启用 H2 控制台。
1spring.datasource.url=jdbc:h2:~/testdb 2spring.datasource.driverClassName=org.h2.Driver 3spring.datasource.username=sa 4spring.datasource.password=password 5spring.jpa.database-platform=org.hibernate.dialect.H2Dialect 6 7spring.h2.console.enabled=true
Hibernate 配置
接下来,我们介绍几个在 todo 应用中用于配置 Hibernate 额外功能的常用属性。
1spring.datasource.url=jdbc:h2:~/testdb 2spring.datasource.driverClassName=org.h2.Driver 3spring.datasource.username=sa 4spring.datasource.password=password 5spring.jpa.database-platform=org.hibernate.dialect.H2Dialect 6 7spring.h2.console.enabled=true 8 9spring.jpa.show-sql=true 10spring.jpa.properties.hibernate.format_sql=true 11spring.jpa.hibernate.ddl-auto=create
例如,通过 spring.jpa.show-sql 属性可让 Hibernate 显示底层执行的 SQL 语句;而 SQL 格式化功能则可通过 spring.jpa.properties.hibernate.format_sql 属性进行配置。
最后,使用 spring.jpa.hibernate.ddl-auto 属性可让 Hibernate 自动管理数据库表结构。该属性支持 create、update、create-drop 和 validate 等值,能够根据实体类自动创建、更新、删除或验证数据库模式。