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

相关文章
|
3天前
|
存储 JSON Ubuntu
时序数据库 TDengine 支持集成开源的物联网平台 ThingsBoard
本文介绍了如何结合 Thingsboard 和 TDengine 实现设备管理和数据存储。Thingsboard 中的“设备配置”与 TDengine 中的超级表相对应,每个设备对应一个子表。通过创建设备配置和设备,实现数据的自动存储和管理。具体操作包括创建设备配置、添加设备、写入数据,并展示了车辆实时定位追踪和车队维护预警两个应用场景。
20 3
|
14天前
|
SQL 机器学习/深度学习 数据库
SQL与Python集成:数据库操作无缝衔接
在开始之前,确保你已经安装了必要的Python库,如`sqlite3`(用于SQLite数据库)或`psycopg2`(用于PostgreSQL数据库)。这些库提供了Python与SQL数据库之间的接口。
|
18天前
|
安全 算法 Java
数据库信息/密码加盐加密 —— Java代码手写+集成两种方式,手把手教学!保证能用!
本文提供了在数据库中对密码等敏感信息进行加盐加密的详细教程,包括手写MD5加密算法和使用Spring Security的BCryptPasswordEncoder进行加密,并强调了使用BCryptPasswordEncoder时需要注意的Spring Security配置问题。
58 0
数据库信息/密码加盐加密 —— Java代码手写+集成两种方式,手把手教学!保证能用!
|
11天前
|
SQL 机器学习/深度学习 数据采集
SQL与Python集成:数据库操作无缝衔接2a.bijius.com
Python与SQL的集成是现代数据科学和工程实践的核心。通过有效的数据查询、管理与自动化,可以显著提升数据分析和决策过程的效率与准确性。随着技术的不断发展,这种集成的应用场景将更加广泛,为数据驱动的创新提供更强大的支持。
|
11天前
|
SQL 机器学习/深度学习 数据库
SQL与Python集成:数据库操作无缝衔接
1. Python与SQL集成的关键步骤 在开始之前,确保你已经安装了必要的Python库,如`sqlite3`(用于SQLite数据库)或`psycopg2`(用于PostgreSQL数据库)。这些库提供了Python与SQL数据库之间的接口。
|
3月前
|
资源调度 Java 调度
Spring Cloud Alibaba 集成分布式定时任务调度功能
Spring Cloud Alibaba 发布了 Scheduling 任务调度模块 [#3732]提供了一套开源、轻量级、高可用的定时任务解决方案,帮助您快速开发微服务体系下的分布式定时任务。
14777 25
|
2月前
|
存储 C# 关系型数据库
“云端融合:WPF应用无缝对接Azure与AWS——从Blob存储到RDS数据库,全面解析跨平台云服务集成的最佳实践”
【8月更文挑战第31天】本文探讨了如何将Windows Presentation Foundation(WPF)应用与Microsoft Azure和Amazon Web Services(AWS)两大主流云平台无缝集成。通过具体示例代码展示了如何利用Azure Blob Storage存储非结构化数据、Azure Cosmos DB进行分布式数据库操作;同时介绍了如何借助Amazon S3实现大规模数据存储及通过Amazon RDS简化数据库管理。这不仅提升了WPF应用的可扩展性和可用性,还降低了基础设施成本。
70 0
|
2月前
|
存储 机器学习/深度学习 人工智能
矢量数据库与LLM的集成:实践指南
矢量数据库与LLM的集成:实践指南
46 2
|
2月前
|
人工智能 Java API
JeecgBoot 低代码平台快速集成 Spring AI
Spring 通过 Spring AI 项目正式启用了 AI(人工智能)生成提示功能。本文将带你了解如何在 Jeecg Boot 应用中集成生成式 AI,以及 Spring AI 如何与模型互动,包含 RAG 功能。
114 3
|
3月前
|
JSON 缓存 Java
Spring Boot集成 Swagger2 展现在线接口文档
本节课详细分析了 Swagger 的优点,以及 Spring Boot 如何集成 Swagger2,包括配置,相关注解的讲解,涉及到了实体类和接口类,以及如何使用。最后通过页面测试,体验了 Swagger 的强大之处,基本上是每个项目组中必备的工具之一,所以要掌握该工具的使用,也不难。

热门文章

最新文章