Spring集成H2内存数据库

简介: H2内存数据库使用,满足缓存关系型数据库的使用,快速上手,无缝衔接oracle、mysql

背景

开发中经常想使用数据库,但是可能种种原因导致暂时无法安装oracle、mysql这种关系型数据库怎么办?H2轻松解决,既能快速上手也能满足你sql语法的要求,后续可很好的并入oracle和mysql中去。

一. H2数据库

H2 数据库是一个用 Java 开发的嵌入式(内存级别)数据库,它本身只是一个类库,也就是只有一个 jar 文件,可以直接嵌入到项目中。

注意:H2数据库的内存模式,那么我们创建的数据库和表都只是保存在内存中,一旦服务器重启,那么内存中的数据库和表就不存在了。

用途:缓存

H2的2种连接方式

  • 以嵌入式(本地)连接方式连接H2数据库:

这种连接方式默认情况下只允许有一个客户端连接到H2数据库。当有客户端连接到H2数据库之后,此时数据库文件就会被锁定,那么其他客户端就无法再连接了。

连接语法:

jdbc:h2:[file:][]

例如:

//连接位于用户目录下的test数据库

jdbc:h2:~/test

jdbc:h2:file:/data/sample

jdbc:h2:file:E:/H2/gacl(Windows only)

  • 使用TCP/IP的服务器模式(远程连接)方式连接H2数据库(推荐):

这种连接方式和其他数据库连接方式类似,是基于Service的形式进行连接的,因此允许多个客户端同时连接到H2数据库。

连接语法:

jdbc:h2:tcp://[:]/[]

范例:

jdbc:h2:tcp://localhost/~/test

二.下载H2

1. H2 数据库下载地址:

http://www.h2database.com/html/main.html

http://www.h2database.com/html/download.html

image.png

2. H2软件包目录结构

h2

 |---bin

 | |---h2-2.1.212.jar  //H2数据库的jar包(驱动也在里面)

 | |---h2.bat   //Windows控制台启动脚本

 | |---h2.sh   //Linux控制台启动脚本

 | |---h2w.bat  //Windows控制台启动脚本(不带黑屏窗口)

 |---docs   //H2数据库的帮助文档(内有H2数据库的使用手册)

 |---service   //通过wrapper包装成服务。

 |---src   //H2数据库的源代码

 |---build.bat  //windows构建脚本

 |---build.sh  //linux构建脚本

3. windows下启动软件

我们可以进入到h2的bin目录下,点击h2.bat或者h2w.bat,运行软件。我这里选择的是点击h2w.bat(如上图红框),该方式会在后台运行。

4. Linux下启动软件

在 Linux 环境下,首先用上传命令rz等把压缩文件(.zip)上传到某个目录下,用unzip命令解压,自动解压到h2目录下,然后在h2/bin目录下,运行./h2.sh 文件来启动数据库服务,但不建议这样直接启动,因为需要带一些参数,需要进行如下修改:

1).复制h2.sh为h2_server.sh文件:

# cp h2.sh h2_server.sh

2).用vim编辑h2_server.sh,如下:

#!/bin/sh

dir=$(dirname"$0")

java -cp "$dir/h2-2.1.212.jar:$H2DRIVERS:$CLASSPATH" org.h2.tools.Server -tcpAllowOthers -webAllowOthers -webPort 8082 "$@"

3).说明:

org.h2.tools.Server: 以服务器模式启动;

-tcpAllowOthers: 允许远程机器通过TCP方式访问;

-webAllowOthers: 允许远程机器通过浏览器访问;

-webPort 8082: 默认的访问端口(8082为未被占用的端口,如果此端口已经被其他端口占用,则改为其他端口);

4).具体的运行方式:

chmod修改启动文件权限:

# chmod +x h2_server.sh

输入如下命令后台运行:

# nohup ./h2_server.sh & 回车

说明:nohup 命令可以在我们退出账户之后继续运行相应的进程,nohup 就是不挂起的意思(no hang up),& 表示让该进程实现后台运行。

该命令的一般形式为:

# nohup command & 回车

三. spring boot 中集成H2数据库

1、添加依赖:

<!-- H2数据库 -->
<dependency>
  <groupId>com.h2database</groupId>
  <artifactId>h2</artifactId>
</dependency>

2、配置文件 application.yml:

server:

 port: 8089
spring:

 datasource:

   url: jdbc:h2:~/test

   driver-class-name: org.h2.Driver

   username: sa

   password: 123456


 #    schema: classpath:db/schema.sql
 #    data: classpath:db/data.sql
 jpa:

   database: h2

   hibernate:

     ddl-auto: update
   show-sql: true
 h2:

   console:

     path: /h2-console

     enabled: true

domain实体

package com.springboot.demo.entity;

       import lombok.AllArgsConstructor;
       import lombok.Data;
       import lombok.NoArgsConstructor;

       import javax.persistence.*;

@Entity

@Data

@AllArgsConstructor

@NoArgsConstructor

public class Location {

   @Id

   @GeneratedValue(strategy = GenerationType.IDENTITY)

   private Long id;
   private String type;
   private double latitude;
   private double longtitude;
}

dao层

@Repository

public interface LocationRepository extends JpaRepository<Location,Long> {

   List<Location> getLocationsByType(String type);
}

controller层

@Controller

public class HelloContraller {


   @Autowired

   private LocationRepository locationRepository;
   @ResponseBody

   @RequestMapping("/hello")

   public List<Location> hello(){

       return locationRepository.findAll();
   }

}


数据console查看

下面使用H2控制台查看:

http://localhost:8089/h2-console

输入用户名sa,密码123456

image.png

9. 在打开的页面中点击左侧的Location。

image.png

10. 可以看到右侧显示了SQL:

SELECT * FROM USER

点击上面的Run执行。

image.png

11. 执行完毕后,可以看到下面显示了我们加入的数据。

image.png

相关文章
|
1月前
|
机器学习/深度学习 算法 PyTorch
125_训练加速:FlashAttention集成 - 推导注意力优化的独特内存节省
2025年,大型语言模型的训练面临着前所未有的挑战。随着模型参数量和序列长度的不断增加,传统注意力机制的内存瓶颈问题日益突出。FlashAttention作为一种突破性的注意力算法,通过创新的内存访问模式和计算优化,显著提升了训练效率和内存利用。
|
2月前
|
安全 Java 应用服务中间件
Spring Boot + Java 21:内存减少 60%,启动速度提高 30% — 零代码
通过调整三个JVM和Spring Boot配置开关,无需重写代码即可显著优化Java应用性能:内存减少60%,启动速度提升30%。适用于所有在JVM上运行API的生产团队,低成本实现高效能。
231 3
|
12月前
|
Java 数据库连接 测试技术
SpringBoot入门 - 添加内存数据库H2
SpringBoot入门 - 添加内存数据库H2
743 3
SpringBoot入门 - 添加内存数据库H2
|
Java 数据库连接 测试技术
SpringBoot入门(4) - 添加内存数据库H2
SpringBoot入门(4) - 添加内存数据库H2
261 4
SpringBoot入门(4) - 添加内存数据库H2
|
Java Maven Docker
gitlab-ci 集成 k3s 部署spring boot 应用
gitlab-ci 集成 k3s 部署spring boot 应用
|
8月前
|
NoSQL Java API
微服务——SpringBoot使用归纳——Spring Boot 中集成Redis——Spring Boot 集成 Redis
本文介绍了在Spring Boot中集成Redis的方法,包括依赖导入、Redis配置及常用API的使用。通过导入`spring-boot-starter-data-redis`依赖和配置`application.yml`文件,可轻松实现Redis集成。文中详细讲解了StringRedisTemplate的使用,适用于字符串操作,并结合FastJSON将实体类转换为JSON存储。还展示了Redis的string、hash和list类型的操作示例。最后总结了Redis在缓存和高并发场景中的应用价值,并提供课程源代码下载链接。
1933 0
|
10月前
|
存储 安全 Java
Spring Boot 3 集成Spring AOP实现系统日志记录
本文介绍了如何在Spring Boot 3中集成Spring AOP实现系统日志记录功能。通过定义`SysLog`注解和配置相应的AOP切面,可以在方法执行前后自动记录日志信息,包括操作的开始时间、结束时间、请求参数、返回结果、异常信息等,并将这些信息保存到数据库中。此外,还使用了`ThreadLocal`变量来存储每个线程独立的日志数据,确保线程安全。文中还展示了项目实战中的部分代码片段,以及基于Spring Boot 3 + Vue 3构建的快速开发框架的简介与内置功能列表。此框架结合了当前主流技术栈,提供了用户管理、权限控制、接口文档自动生成等多项实用特性。
713 8
|
资源调度 Java 调度
Spring Cloud Alibaba 集成分布式定时任务调度功能
Spring Cloud Alibaba 发布了 Scheduling 任务调度模块 [#3732]提供了一套开源、轻量级、高可用的定时任务解决方案,帮助您快速开发微服务体系下的分布式定时任务。
15932 122
|
Java 数据库连接 测试技术
SpringBoot入门(4) - 添加内存数据库H2
SpringBoot入门(4) - 添加内存数据库H2
158 2
SpringBoot入门(4) - 添加内存数据库H2
|
Java 数据库连接 测试技术
SpringBoot入门(4) - 添加内存数据库H2
SpringBoot入门(4) - 添加内存数据库H2
172 13

热门文章

最新文章