H2内存数据库

本文介绍了H2数据库,一种Java开发的嵌入式数据库,探讨了其内存模式、三种运行模式(内嵌、服务器和混合),以及ORM和JPA在数据持久化中的作用。还列出了H2数据库支持的数据类型及其在Spring框架中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

官方链接:H2 Database Engine (redirect)

H2是什么

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

H2数据库又被称为内存数据库,因为它支持在内存中创建数据库和表。所以如果我们使用H2数据库的内存模式,那么我们创建的数据库和表都只是保存在内存中,一旦服务器重启,那么内存中的数据库和表就不存在了。

三种模式

内嵌模式(Embedded Mode)

优点:

应用程序和数据库在同一个JVM中,通过JDBC进行连接。可以实现持久化,但同时只能有一个客户端连接。性能好。

缺点:

只在一个虚拟机(和类加载器)中打开。

服务器模式(Server Mode)

优点:

使用TCP/IP 远程连接。

使用服务器模式和内嵌模式一样,只不过它可以跑在另一个进程里。

缺点:

网络IO限制速度。

混合模式

第一个应用通过内嵌模式与数据库建立连接,同时也作为一个服务器启动,于是另外的应用(运行在不同的进程或是虚拟机上)可以同时访问同样的数据。

什么是ORM

对象关系映射(Object Relational Mapping,简称ORM), 简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将java程序中的对象自动持久化到关系数据库。本质上就是将数据从一种形式转换到另外一种形式,具体如下:

具体映射:

  1. 数据库的表(table) --> 类(class)

  2. 记录(record,行数据)--> 对象(object)

  3. 字段(field)--> 对象的属性(attribute)

什么是JPA

JPA是Spring提供的一种ORM

Spring Data是基于Spring runtime体系的,JPA 属于Spring Data, 和JDBC的关系如下:

数据类型

1、INT Type

值范围:-2147483648 - 2147483647

2、BOOLEAN Type

可选值:TRUE和FALSE

3、TINYINT Type

值范围:-128 -127

4、SMALLINT Type

值范围: -32768 to 32767

5、BIGINT Type

值范围:-9223372036854775808 - 9223372036854775807

6、IDENTITY Type

自动增长值

值范围:-9223372036854775808 - 9223372036854775807

7、DECIMAL Type

示例:DECIMAL(20, 2)

8、DOUBLE Type

9、REAL Type

浮点类型

10、TIME Type

时间类型,格式为:hh:mm:ss

11 、DATE Type

日期类型,格式为:yyyy-MM-dd

12、TIMESTAMP Type

时间戳类型,格式为:yyyy-MM-dd hh:mm:ss[.nnnnnnnnn]

可映射为java对象:java.sql.Timestamp/java.util.Date

13、BINARY Type

存储字节流,大数据建议使用BLOB类型存储

示例:BINARY(1000)

14、OTHER Type

用于存储序列化的java对象

15、VARCHAR Type

存储字符串,大文本数据建议使用CLOB类型存储

示例:VARCHAR(255)

16、VARCHAR_IGNORECASE Type

与VARCHAR类似,但是不区分大小写

17、CHAR Type

存储unicode字符串,与VARCHAR的区别是,尾部的空格不会被存储

18、BLOB Type

存储大容量二进制流,最大存储2G数据

映射java对象类型为:java.sql.Blob /java.io.InputStream

19、CLOB Type

用于存储大容量的文本数据

映射java对象类型为:java.sql.Clob/java.io.Reader

20、UUID Type

存储通用唯一识别码,占用128bit

21、ARRAY Type

数组类型,使用一个值列表(1,2)或PreparedStatement.setObject(.., new Object[] {..})存储值

映射java对象类型为:java.lang.Object[]

22、GEOMETRY Type

存储空间几何对象,一般存储WKT格式的空间数据

参考:

SpringBoot - 内存数据库H2简介

H2数据库使用详细指南- SLQ - 数据类型 - 简单集群

问题:

混合模式下无法访问主机器:解决链接

Access the Same In-Memory H2 Database in Multiple Spring Boot Applications | Baeldung

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值