Spring Boot 使用内存数据库H2 Database

2024-05-01 21:58

本文主要是介绍Spring Boot 使用内存数据库H2 Database,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

数据库是软件开发的一个重要工具,所有的开发过程中产生的数据最终都会存储到数据库中。作为开发人员我们就不得不在自己的开发设备上安装各种数据库软件。但是很多时候我们可能仅仅是为了做一些功能性测试,或者仅仅是做一些技术探索我们其实可以不用去安装特定的数据库软件的。
这里我将介绍在java开发过程中可以使用的内存数据库,H2 database官网地址,正如前面说的数据库是运行在内存中的,当启动应用的时候就创建数据库当关闭应用的时候则关闭数据库,无需安装额外的数据库软件。

开发环境 Spring Boot + Jpa +H2

同样的代码我已经提交的github,代码地址

这个代码数据库我从原来的基于mysql调整到基于H2数据库主要做了以下调整
首先pom.xml

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope></dependency>

其次是application.properties文件


##DB
# 数据库url地址
spring.datasource.url=jdbc:h2:mem:spring
spring.datasource.username=spring
spring.datasource.password=spring
spring.datasource.driverClassName=org.h2.Driver
# 配置初始化大小、最小、最大
spring.datasource.initialSize=1
spring.datasource.maxActive=20
spring.datasource.minIdle=1
#配置获取连接等待超时的时间
spring.datasource.maxWait=60000
#配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
spring.datasource.timeBetweenEvictionRunsMillis=60000
#配置一个连接在池中最小生存的时间,单位是毫秒
spring.datasource.minEvictableIdleTimeMillis=300000
#用来检测连接是否有效的sql,要求是一个查询语句。
spring.datasource.validationQuery=SELECT 'x'
spring.datasource.testWhileIdle=true
spring.datasource.testOnBorrow=false
spring.datasource.testOnReturn=false
# 打开PSCache,并且指定每个连接上PSCache的大小
spring.datasource.poolPreparedStatements=true
spring.datasource.maxPoolPreparedStatementPerConnectionSize=20
#配置监控统计拦截的filters
spring.datasource.filters=stat,wall
# 配置db类型为h2 =dbType
spring.datasource.dbType=h2

数据库连接池依然采用的是druid数据源,只是将相应的url和driver和dbtype做了修改来适配h2
同时我们在配置数据源的时候需要将hibernate的数据库方言设置为H2数据库的方言
在RepositoryConfig.java文件中修改数据库方言

/*** 通过jpaProperties指定hibernate数据库方言以及在控制台打印sql语句* @param dataSource* @return*/private Map<String, String> getVendorProperties(DataSource dataSource) {Map<String, String> map = jpaProperties.getHibernateProperties(dataSource);map.put("hibernate.dialect", "org.hibernate.dialect.H2Dialect");map.put("hibernate.show_sql", "true");return map;}

下一步就是修改实体映射

@Entity
@Table(name = "file", schema = "spring", catalog = "")
public class FileEntity {private String fileid;private String filename;private String filetype;private String fileext;private byte[] filedata;}

将@Table(name = “file”, schema = “spring”, catalog = “”)修改为
@Table(name = “file”)不然项目启动的时候会报错
这样其实我们已经完成了数据库从mysql迁移到H2数据库了,再启动项目
在启动项目的时候会自动创建数据库和相应的表
可以通过http://localhost:8080/h2-console访问内置的数据库
这样我们就可以在spring boot中使用内存数据库来完成我们的一些功能测试和技术测试了

这篇关于Spring Boot 使用内存数据库H2 Database的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/952765

相关文章

Java实现在Word文档中添加文本水印和图片水印的操作指南

《Java实现在Word文档中添加文本水印和图片水印的操作指南》在当今数字时代,文档的自动化处理与安全防护变得尤为重要,无论是为了保护版权、推广品牌,还是为了在文档中加入特定的标识,为Word文档添加... 目录引言Spire.Doc for Java:高效Word文档处理的利器代码实战:使用Java为Wo

SpringBoot日志级别与日志分组详解

《SpringBoot日志级别与日志分组详解》文章介绍了日志级别(ALL至OFF)及其作用,说明SpringBoot默认日志级别为INFO,可通过application.properties调整全局或... 目录日志级别1、级别内容2、调整日志级别调整默认日志级别调整指定类的日志级别项目开发过程中,利用日志

Java中的抽象类与abstract 关键字使用详解

《Java中的抽象类与abstract关键字使用详解》:本文主要介绍Java中的抽象类与abstract关键字使用详解,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、抽象类的概念二、使用 abstract2.1 修饰类 => 抽象类2.2 修饰方法 => 抽象方法,没有

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

MyBatis ParameterHandler的具体使用

《MyBatisParameterHandler的具体使用》本文主要介绍了MyBatisParameterHandler的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录一、概述二、源码1 关键属性2.setParameters3.TypeHandler1.TypeHa

Spring 中的切面与事务结合使用完整示例

《Spring中的切面与事务结合使用完整示例》本文给大家介绍Spring中的切面与事务结合使用完整示例,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录 一、前置知识:Spring AOP 与 事务的关系 事务本质上就是一个“切面”二、核心组件三、完

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

Java实现远程执行Shell指令

《Java实现远程执行Shell指令》文章介绍使用JSch在SpringBoot项目中实现远程Shell操作,涵盖环境配置、依赖引入及工具类编写,详解分号和双与号执行多指令的区别... 目录软硬件环境说明编写执行Shell指令的工具类总结jsch(Java Secure Channel)是SSH2的一个纯J

使用Python实现Word文档的自动化对比方案

《使用Python实现Word文档的自动化对比方案》我们经常需要比较两个Word文档的版本差异,无论是合同修订、论文修改还是代码文档更新,人工比对不仅效率低下,还容易遗漏关键改动,下面通过一个实际案例... 目录引言一、使用python-docx库解析文档结构二、使用difflib进行差异比对三、高级对比方

JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法

《JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法》:本文主要介绍JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法,每种方法结合实例代码给大家介绍的非常... 目录引言:为什么"相等"判断如此重要?方法1:使用some()+includes()(适合小数组)方法2