H2数据库引擎

H2数据库由java语言构建,其源码可用于学习和剖析数据库原理,最终jar文件约为2 MB大小,属于内存数据库支持多版本并发和全文检索。

H2 控制台

H2 控制台允许使用浏览器访问数据库,可以是H2数据库,也可以是支持JDBC API的其他数据库。

H2 控制台设置

H2 控制台首次启动时会自动创建。支持的设置项:

.h2.server.properties
C:\Documents and Settings\[username]C:\Users\[username]

webAllowOthers:允许其他计算机连接。

webPort:H2 控制台的端口。

webSSL:使用加密的 TLS (HTTPS) 连接。

webAdminPassword:密码访问 H2 控制台的首选项和工具。

使用JDBC连接到数据库

import java.sql.*;
public class Test {
  public static void main(String[] a)
      throws Exception {
    Connection conn = DriverManager.
      getConnection("jdbc:h2:~/test", "sa", "");
    // add application code here
    conn.close();
  }
}

创建新数据库

默认如果URL中指定的数据库尚不存在,则会自动创建新(空)数据库。创建数据库的用户将自动成为此数据库的管理员。可以禁用自动创建数据库。

H2 控制台不允许创建数据库,除非控制台在启动过程中或从系统托盘中的图标打开浏览器窗口,并且未启用远程访问。托盘图标的上下文菜单也可用于创建新数据库。

也可以使用命令行Shell工具创建新的本地数据库:

> java -cp h2-*.jar org.h2.tools.Shell

Welcome to H2 Shell
Exit with Ctrl+C
[Enter]  jdbc:h2:mem:2
URL    jdbc:h2:./path/to/database
[Enter]  org.h2.Driver
Driver
[Enter]  sa
User   your_username
Password (hidden)
Type the same password again to confirm database creation.
Password (hidden)
Connected

sql> quit
Connection closed

默认情况下,不允许从 TCP 连接或Web界面远程创建数据库。

出于安全原因,不建议启用远程创建数据库。创建新数据库的用户将成为其管理员,因此获得与 H2 相同的 JVM 访问权限。建议使用嵌入式URL、本地H2控制台或Shell工具在本地创建数据库。

如果确实需要允许远程数据库创建,可以将参数传递给TCP、PG或Web 服务器(但不能传递到控制台工具)。如果使用它,用防火墙或其他一些解决方案保护端口,并且仅在受信任的网络中使用这种设置组合。

-ifNotExists -tcpAllowOthers -pgAllowOthers -webAllowOthers

服务器模式

H2目前支持三种服务器:Web服务器(用于 H2 控制台)、TCP 服务器(用于客户端/服务器连接)和 PG 服务器(用于PostgreSQL客户端)。只有 Web 服务器支持浏览器连接。

启动服务器不会打开数据库 - 一旦客户端连接,就会打开数据库。

如有需要参考H2使用手册