文章目录
H2是一个开源的嵌入式数据库引擎,采用java语言编写,不受平台的限制,同时H2提供了一个十分方便的web控制台用于操作和管理数据库内容。H2还提供兼容模式,可以兼容一些主流的数据库,因此采用H2作为开发期的数据库非常方便。
1、配置
1.1 pom.xml
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
</dependency>
</dependencies>
1.2 application.properties
##数据库连接设置
spring.datasource.driverClassName =org.h2.Driver
#可执行程序的当前路径
spring.datasource.url = jdbc:h2:file:./dbh2/dbc2m;AUTO_SERVER=TRUE
spring.datasource.username = h2
spring.datasource.password = h2123
# 进行该配置后,每次启动程序,程序都会运行resources/db/schema.sql文件,对数据库的结构进行操作。
spring.datasource.schema=classpath:db/schema.sql
#进行该配置后,每次启动程序,程序都会运行resources/db/data.sql文件,对数据库的数据操作。
spring.datasource.data=classpath:db/data.sql
spring.datasource.initialization-mode=always
##h2 web console设置
#表明使用的数据库平台是h2
spring.datasource.platform=h2
# 进行该配置后,h2 web consloe就可以在远程访问了。否则只能在本机访问。
spring.h2.console.settings.web-allow-others=true
#进行该配置,你就可以通过YOUR_URL/h2访问h2 web consloe。YOUR_URL是你程序的访问URl。
spring.h2.console.path=/h2
#进行该配置,程序开启时就会启动h2 web consloe。当然这是默认的,如果你不想在启动程序时启动h2 web consloe,那么就设置为false。
spring.h2.console.enabled=true
H2 运行方式:
1、 在内存中运行: 数据库只在内存中运行,关闭连接后数据库将被清空,适合测试环境
jdbc:h2:mem:DBName;DB_CLOSE_DELAY=-1
如果不指定DBName,则以私有方式启动,只允许一个连接
2、嵌入式
数据库持久化存储为单个文件
jdbc:h2:file:~/.h2/DBName;AUTO_SERVER=TRUE
~/.h2/DBName表示数据库文件的存储位置,如果第一次连接则会自动创建数据库
3、服务模式
H2支持三种服务模式:
- web server:此种运行方式支持使用浏览器访问H2 Console
- TCP server:支持客户端/服务器端的连接方式
- PG server:支持PostgreSQL客户端
启动tcp服务连接字符串示例:
jdbc:h2:tcp://localhost/~/test 使用用户主目录
jdbc:h2:tcp://localhost//data/test 使用绝对路径
4、连接字符串参数
- DB_CLOSE_DELAY:要求最后一个正在连接的连接断开后,不要关闭数据库
- MODE=MySQL:兼容模式,H2兼容多种数据库,该值可以为:DB2、Derby、HSQLDB、MSSQLServer、MySQL、Oracle、PostgreSQL
- AUTO_RECONNECT=TRUE:连接丢失后自动重新连接
- AUTO_SERVER=TRUE:启动自动混合模式,允许开启多个连接,该参数不支持在内存中运行模式
- TRACE_LEVEL_SYSTEM_OUT、TRACE_LEVEL_FILE:输出跟踪日志到控制台或文件, 取值0为OFF,1为ERROR(默认值),2为INFO,3为DEBUG
- SET TRACE_MAX_FILE_SIZE mb:设置跟踪日志文件的大小,默认为16M
1.3 schema.sql
CREATE TABLE USER_INF(id INTEGER PRIMARY KEY,name VARCHAR(100),sex VARCHAR(2));
1.4 data.sql
INSERT INTO USER_INF VALUES(1, 'tom', '男');
INSERT INTO USER_INF VALUES(2, 'jack', '女');
INSERT INTO USER_INF VALUES(3, 'marry', '男');
INSERT INTO USER_INF VALUES(4, 'lucy', '男');
1.5 DataSourceConfiguration
根据自己的需求进行数据源配置,比如使用 JdbcConnectionPool,也可以使用 DruidDataSource,需要引入 Druid 包。
@Configuration
public class DataSourceConfig {
@Value("${spring.datasource.url}")
private String url;
@Value("${spring.datasource.username}")
private String user;
@Value("${spring.datasource.password}")
private String password;
@ConfigurationProperties(prefix = "spring.datasource")
@Bean
public DataSource h2DataSource(){
return JdbcConnectionPool.create(url, user, password);
}
}
另外,可以通过 spring.datasource.type
属性来配置 DataSource,但是因为 JdbcConnectionPool 没有默认默认构造方法,所以初始化失败,只好通过 Bean Configuration 的方式来创建。
2、启动
启动 SpringApplication,会在当前目录下创建 h2 数据库,如下:
登录 H2 Web console
http://localhost:8080/h2
按照 application.properties 中的配置来填写访问参数,如下:
登录后,可以对 H2 数据库进行操作: