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月前
|
Java Spring 容器
Spring系列文章:Spring6集成MyBatis3.5
Spring系列文章:Spring6集成MyBatis3.5
|
11天前
|
安全 Java 测试技术
Spring Boot集成支付宝支付:概念与实战
【4月更文挑战第29天】在电子商务和在线业务应用中,集成有效且安全的支付解决方案是至关重要的。支付宝作为中国领先的支付服务提供商,其支付功能的集成可以显著提升用户体验。本篇博客将详细介绍如何在Spring Boot应用中集成支付宝支付功能,并提供一个实战示例。
35 2
|
1天前
|
Cloud Native 关系型数据库 分布式数据库
数据库性能诊断工具DBdoctor通过阿里云PolarDB产品生态集成认证
DBdoctor(V3.1.0)成功通过阿里云PolarDB分布式版(V2.3)集成认证,展现优秀兼容性和稳定性。此工具是聚好看科技的内核级数据库性能诊断产品,运用eBPF技术诊断SQL执行,提供智能巡检、根因分析和优化建议。最新版V3.1.1增加了对PolarDB-X和OceanBase的支持,以及基于cost的索引诊断功能。PolarDB-X是阿里巴巴的高性能云原生分布式数据库,兼容MySQL生态。用户可通过提供的下载地址、在线试用链接和部署指南体验DBdoctor。
|
1天前
|
缓存 关系型数据库 数据库
【Docker 专栏】Docker 与容器化数据库的集成与优化
【5月更文挑战第9天】本文探讨了Docker与容器化数据库集成的优势,如快速部署、环境一致性、资源隔离和可扩展性,并列举了常见容器化数据库(如MySQL、PostgreSQL和MongoDB)。讨论了集成方法、注意事项、优化策略,包括资源调整、缓存优化和监控告警。此外,强调了数据备份、恢复测试及性能评估的重要性。未来,随着技术发展,二者的集成将更紧密,为数据管理带来更多可能性。掌握此技术将应对数字化时代的机遇与挑战。
【Docker 专栏】Docker 与容器化数据库的集成与优化
|
2天前
|
安全 Java 数据库连接
在IntelliJ IDEA中通过Spring Boot集成达梦数据库:从入门到精通
在IntelliJ IDEA中通过Spring Boot集成达梦数据库:从入门到精通
|
10天前
|
存储 大数据 数据处理
矢量数据库与大数据平台的集成:实现高效数据处理
【4月更文挑战第30天】本文探讨了矢量数据库与大数据平台的集成,以实现高效数据处理。集成通过API、中间件或容器化方式,结合两者优势,提升处理效率,简化流程,并增强数据安全。关键技术支持包括分布式计算、数据压缩编码、索引优化和流处理,以优化性能和实时性。随着技术发展,这种集成将在数据处理领域发挥更大作用。
|
10天前
|
SQL 分布式计算 DataWorks
DataWorks操作报错合集之在DataWorks数据集成中,但是预览ODPS源数据库为空,是什么导致的
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
22 0
|
11天前
|
分布式计算 DataWorks 关系型数据库
DataWorks产品使用合集之在使用 DataWorks 数据集成同步 PostgreSQL 数据库中的 Geometry 类型数据如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
23 0
|
26天前
|
存储 安全 Java
Spring Security实现基于数据库实现认证
本文档介绍了如何在Spring Security框架中基于数据库实现用户认证。首先,Spring Security提供了一个`UserDetailsService`接口,用于获取用户详细信息,通常在用户尝试登录时被调用。
50 5
|
26天前
|
缓存 Java Spring
单体项目中资源管理模块集成Spring Cache
该内容是关于将Spring Cache集成到资源管理模块以实现缓存同步的说明。主要策略包括:查询时添加到缓存,增删改时删除相关缓存。示例代码展示了@Service类中使用@Transactional和@Cacheable注解进行缓存操作,以及在RedisTemplate中处理缓存的示例。
24 5