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

相关文章
|
19天前
|
Java 数据库连接 测试技术
SpringBoot入门(4) - 添加内存数据库H2
SpringBoot入门(4) - 添加内存数据库H2
39 4
SpringBoot入门(4) - 添加内存数据库H2
|
1月前
|
Java Maven Docker
gitlab-ci 集成 k3s 部署spring boot 应用
gitlab-ci 集成 k3s 部署spring boot 应用
|
22天前
|
Java 数据库连接 测试技术
SpringBoot入门(4) - 添加内存数据库H2
SpringBoot入门(4) - 添加内存数据库H2
29 2
SpringBoot入门(4) - 添加内存数据库H2
|
14天前
|
Java 数据库连接 测试技术
SpringBoot入门(4) - 添加内存数据库H2
SpringBoot入门(4) - 添加内存数据库H2
55 13
|
9天前
|
Java 数据库连接 测试技术
SpringBoot入门(4) - 添加内存数据库H2
SpringBoot入门(4) - 添加内存数据库H2
24 4
|
23天前
|
SQL Java 数据库
Spring Boot与Flyway:数据库版本控制的自动化实践
【10月更文挑战第19天】 在软件开发中,数据库的版本控制是一个至关重要的环节,它确保了数据库结构的一致性和项目的顺利迭代。Spring Boot结合Flyway提供了一种自动化的数据库版本控制解决方案,极大地简化了数据库迁移管理。本文将详细介绍如何使用Spring Boot和Flyway实现数据库版本的自动化控制。
23 2
|
1月前
|
前端开发 Java 程序员
springboot 学习十五:Spring Boot 优雅的集成Swagger2、Knife4j
这篇文章是关于如何在Spring Boot项目中集成Swagger2和Knife4j来生成和美化API接口文档的详细教程。
88 1
|
1月前
|
Java 数据库 数据安全/隐私保护
Spring 微服务提示:使用环境变量抽象数据库主机名
Spring 微服务提示:使用环境变量抽象数据库主机名
41 1
|
1月前
|
存储 前端开发 Java
Spring Boot 集成 MinIO 与 KKFile 实现文件预览功能
本文详细介绍如何在Spring Boot项目中集成MinIO对象存储系统与KKFileView文件预览工具,实现文件上传及在线预览功能。首先搭建MinIO服务器,并在Spring Boot中配置MinIO SDK进行文件管理;接着通过KKFileView提供文件预览服务,最终实现文档管理系统的高效文件处理能力。
265 11
|
1月前
|
Java Spring
springboot 学习十一:Spring Boot 优雅的集成 Lombok
这篇文章是关于如何在Spring Boot项目中集成Lombok,以简化JavaBean的编写,避免冗余代码,并提供了相关的配置步骤和常用注解的介绍。
91 0

热门文章

最新文章