官方链接: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程序中的对象自动持久化到关系数据库中。本质上就是将数据从一种形式转换到另外一种形式,具体如下:
具体映射:
-
数据库的表(table) --> 类(class)
-
记录(record,行数据)--> 对象(object)
-
字段(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格式的空间数据
参考:
H2数据库使用详细指南- SLQ - 数据类型 - 简单集群
问题:
混合模式下无法访问主机器:解决链接
Access the Same In-Memory H2 Database in Multiple Spring Boot Applications | Baeldung