【H2实践】之 SpringBoot 整合

目标

本文紧接上篇【H2实践】之认识 H2,上篇简单介绍了 H2 及其使用,本文继上篇,探索 H2 与 SpringBoot 的整合。

主要实现目标:
1、SpringBoot 连接 H2 内存数据库,并对数据库进行管理。
2、访问 H2 Console 客户端

分析

访问 SpringBoot 官网对 H2 的支持,详细内容如下图所示:
在这里插入图片描述

过程

原理不再赘述,下面直接上代码。

1、创建项目
使用 SpringBoot 搭建项目,pom 文件如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.7.9</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.xzbd</groupId>
	<artifactId>jh2</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>jh2</name>
	<description>Demo project for Spring Boot</description>
	<properties>
		<java.version>11</java.version>
	</properties>
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>com.h2database</groupId>
			<artifactId>h2</artifactId>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-jpa</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
 </dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<excludes>
						<exclude>
							<groupId>org.projectlombok</groupId>
							<artifactId>lombok</artifactId>
						</exclude>
					</excludes>
				</configuration>
			</plugin>
		</plugins>
	</build>

</project>

选用的依赖主要有 spring-boot-starter-webspring-boot-starter-data-jpah2lombok 等。

配置

application.yml 配置文件内容

spring:
  jpa:
    database: h2
    show-sql: true
    hibernate:
      ddl-auto: update
  datasource:
    username: sa
    password: 123456
    url: jdbc:h2:./data/jh2;AUTO_SERVER=TRUE;AUTO_RECONNECT=TRUE
    driver-class-name: org.h2.Driver

  h2:
    console:
      enabled: true
      path: /h2-console
      settings:
        web-allow-others: true

配置中表明:

1、使用 JPA 作为 ORM 框架,JPA 的属性中指明使用数据库类型 为 H2 , 打印 SQL , Hibernate.ddl-auto 表示程序启动时根据数据模型更新数据库中的表。

2、数据源配置中,用户名是 sa , 密码是 123456 (sa 用户的密码),数据库连接及 H2 数据库 JDBC 驱动。其中 url: jdbc:h2:./data/jh2; 表示数据存储在程序启动目录的 ./data/ 目录下,并以 jh2 作为数据库名创建相关数据库文件。如果目录 ./data/ 不存在,启动时会自动创建。 AUTO_SERVER=TRUE; 表示自启数据库服务,AUTO_RECONNECT=TRUE 表示自动重连。更多H2连接配置见文末附

3、h2 配置是 spring 整合 h2 的配置项,主要是对 H2 Console 客户端的配置,enable 表示是否启用 H2 console 客户端,true 表示启用;path 表示 H2 Console 的访问路径,本示例中,程序启动成功后可以使用 http://localhost:8080:/h2-console 访问 H2 的 console 客户端。其中 8080 是程序的端口。

启动应用

在这里插入图片描述
如上图,启动程序后,项目 根路径下创建了 data 目录,并且以 jh2 为名称创建了三个数据库相关的db文件。同时启动日志中打印了 H2 Console 客户端访问路径和应用所有端口及访问路径。

访问 H2 客户端

上一章节提到,应用启动成功后,可以在日志中找到应用访问信息和H2 Console 客户端访问信息。根据本示例信息,H2 客户端访问连接为: http://localhost:8080/h2-console/。使用浏览器打开该链接,效果如下图所示。
在这里插入图片描述
输入 JDBC URLjdbc:h2:./data/jh2
输入 Password : 123456
测试连接,效果如下图
在这里插入图片描述
重新输入密码,连接后的效果图如下:
在这里插入图片描述
如此及完成了 SpringBoot 与 H2 数据库的整合。

总结

SpringBoot 官方对 H2 做了很好的整合。当 SpringBoot 应用启动时,应用会自己创建 H2 数据库文件,启动 H2 数据库服务,并支持 H2 数据库 web 客户端 Console 的连接。

接下来只需要 定义数据模型,并根据业务处理数据,最后保存数据即可。

H2数据库连接
数据库支持多种连接模式和连接设置,不同的连接模式和连接设置是通过不同的URL来区分的,URL中的设置是不区分大小写。

1、嵌入式(本地)连接

jdbc:h2:[file:][<path>]<databaseName>
jdbc:h2:~/test
jdbc:h2:file:/data/sample
jdbc:h2:file:C:/data/sample (Windows only)

2、内存数据库(私有)

jdbc:h2:mem:

3、内存数据库(被命名)

jdbc:h2:mem:<databaseName>
jdbc:h2:mem:test_mem

4、使用TCP/IP的服务器模式(远程连接)

jdbc:h2:tcp://<server>[:<port>]/[<path>]<databaseName>
jdbc:h2:tcp://localhost/~/test
jdbc:h2:tcp://dbserv:8084/~/sample

5、使用SSL/TLS的服务器模式(远程连接)

jdbc:h2:ssl://<server>[:<port>]/<databaseName>
jdbc:h2:ssl://secureserv:8085/~/sample;

7、使用加密文件

jdbc:h2:<url>;CIPHER=[AES|XTEA]
jdbc:h2:ssl://secureserv/~/testdb;CIPHER=AES
jdbc:h2:file:~/secure;CIPHER=XTEA

8、文件锁

jdbc:h2:<url>;FILE_LOCK={NO|FILE|SOCKET}
jdbc:h2:file:~/quickAndDirty;FILE_LOCK=NO
jdbc:h2:file:~/private;CIPHER=XTEA;FILE_LOCK=SOCKET

9、仅打开存在的数据库

jdbc:h2:<url>;IFEXISTS=TRUE
jdbc:h2:file:~/sample;IFEXISTS=TRUE

10、当虚拟机退出时并不关闭数据库

jdbc:h2:<url>;DB_CLOSE_ON_EXIT=FALSE

11、用户名和密码

jdbc:h2:<url>[;USER=<username>][;PASSWORD=<value>]
jdbc:h2:file:~/sample;USER=sa;PASSWORD=123

12、更新记入索引

jdbc:h2:<url>;LOG=2
jdbc:h2:file:~/sample;LOG=2

13、调试跟踪项设置

jdbc:h2:<url>;TRACE_LEVEL_FILE=<level 0..3>
jdbc:h2:file:~/sample;TRACE_LEVEL_FILE=3

14、忽略位置参数设置

jdbc:h2:<url>;IGNORE_UNKNOWN_SETTINGS=TRUE

15、指定文件读写模式

jdbc:h2:<url>;ACCESS_MODE_LOG=rws;ACCESS_MODE_DATA=rws

16、在Zip文件中的数据库

jdbc:h2:zip:<zipFileName>!/<databaseName>
jdbc:h2:zip:~/db.zip!/test

17、兼容模式

jdbc:h2:<url>;MODE=<databaseType>
jdbc:h2:~/test;MODE=MYSQL

18、自动重连接

jdbc:h2:<url>;AUTO_RECONNECT=TRUE
jdbc:h2:tcp://localhost/~/test;AUTO_RECONNECT=TRUE

19、自动混合模式

jdbc:h2:<url>;AUTO_SERVER=TRUE
jdbc:h2:~/test;AUTO_SERVER=TRUE

20、更改其他设置

jdbc:h2:<url>;<setting>=<value>[;<setting>=<value>...]
jdbc:h2:file:~/sample;TRACE_LEVEL_SYSTEM_OUT=3

系列文章
1、【H2实践】之认识 H2
2、【H2实践】之 SpringBoot 整合
3、【H2实践】之 SpringBoot 与 H2 数据交互

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值