这段时间为了巩固后方革命根据地,一直没有时间更新公众号,感觉自己都生疏了!不过从今天开始大家又有福利了,又恢复正常了。这波疫情真够大家闹心的,除了门口小超市和口罩,其他几乎都停摆了。长时间不用Mybatis都快忘记了,今天想重温下其源码,搭环境时,却发现这台电脑没有安装MySQL,真是!情急之下偷个懒就想着使用个嵌入式数据库替代MySQL,抓阄之后,抓到了HSQLDB。下面就跟我一起探索HSQLDB的使用方法。
HyperSQL Database(HSQLDB)是一个关系型数据库系统 。它被数据库应用用来开发测试部署。HyperSQL使用Java语言编写,运行在JVM上。它支持数据库访问的JDBC接口。为了使用HyperSQL数据库,你首先需要到其官网下载这个应用,官网地址为hsqldb.org,我当前下载的版本是2.5。解压压缩包,在lib文件夹下,你能找到hsqldb.jar的文件,这个jar包包含几个组件和程序
HyperSQL RDBMS引擎
HyperSQL JDBC Driver
数据库管理工具(基于Swing和AWT版本的访问数据的GUI工具)
HyperSQL RDBMS和JDBC Driver提供核心功能。DatabaseManagerSwing是一个数据库访问工具。另外,sqltool.jar包包含Sql工具,是一个访问数据库的命令行工具。
运行数据库访问工具
交互式用户使用工具来访问数据库,包括数据库的创建,插入或改数据,或者查询数据库。在下面的例子中,Swing版本的数据库管理工具被执行。hsqldb.jar位于../lib目录下相对当前目录。
java -cp ../lib/hsqldb.jar org.hsqldb.util.DatabaseManagerSwing假如hsqldb.jar在当前目录下,命令应该改变为:
java -cp hsqldb.jar org.hsqldb.util.DatabaseManagerSwing当工具被成功启动,你能够连接到数据库,并使用SQL命令操作数据库。这里,你可以连本地数据库xdb,连接明细如下图

基于这样的UI界面,你可以很方便的操作数据。
HyperSQL数据库
每个HyperSQL数据库被叫做一个catalog。根据数据的存储,HyperSQL有三种catalog类型
mem : 数据存储在内存中
file : 数据存储在文件系统文件中
res : 数据存储为一个Java资源,如一个只读的jar包
内存模型的catalog能够用来测试或者精密缓存。这种类型的数据库没有任何文件。
文件模型的catalog包含2-6个文件,名称都是相同的,只有扩展名不同,并且位于相同的目录下。例如,数据库叫test,则包含下面的文件:
test.properties
test.script
test.log
test.data
test.backup
test.lobs
属性文件包含一些数据库的配置。脚本文件包含表和其他数据库对象的定义。日志文件数据库当前的改变。数据文件包含表缓存的数据。备份文件是一个数据文件的备份压缩文件。
当test catalog被打开,test.log文件被用来写数据产生的改变。这个文件当一个常规SHUTDOWN的时候被移除。此外,对于异常SHUTDOWN的情况,这个文件下次启动的时候被用来恢复改变。
res类型的catalog包含一个zip或jar格式的文件,这个文件被部署为一个Java应用程序的一部分。
进程内访问数据库
通常情况下,JDBC被用来访问数据库。例如,假如文件数据库名为testdb,下面的代码被用来获取Connection:
Connection c = DriverManager.getConnection("jdbc:hsqldb:file:testdb","SA","");获取链接的url格式为
jdbc:hsqldb:file:<testbd path>对于mem:database,使用mem:协议指定url,如数据库名称为mymemdb,访问代码为
Connection c = DriverManager.getConnection("jdbc:hsqldb:mem:mymemdb", "SA", "");对于res:database,使用res:协议指定url。数据库路径为一个Java URL。下面的例子中,resdb是数据文件的root名称,它位于/org/my/path目录下。访问代码如下
Connection c = DriverManager.getConnection("jdbc:hsqldb:res:org.my.path.resdb", "SA", "");服务器模式
在大多数应用中,进程中访问是比从网络中访问更快的。在开发期间, 服务器模式也是更优的。当你的应用运行时,它允许你使用另一个孤立的数据库访问工具查询数据库。你可以使用下面的命令来创建一个文件名为mydb.*,别名为xdb的数据库
java -cp ../lib/hsqldb.jar org.hsqldb.server.Server --database.0 file:mydb --dbname.0 xdb启动日志如下图所示

服务器启动成功之后,你可以看到HSQLDB在当前目录下创建了如下文件

当一个HyperSQL服务器正在运行,客户端应用能够使用hsqldb.jar中的HSQLDB JDBC驱动连接数据库。hsql的缺省监听端口为9001,代码片段如下
try {
Class.forName("org.hsqldb.jdbc.JDBCDriver" );
} catch (Exception e) {
System.err.println("ERROR: failed to load HSQLDB JDBC driver.");
e.printStackTrace();
return;
}
Connection c = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost/xdb", "SA", "");
当最近的连接被关闭时,你也可以制定连接属性来关闭数据库
Connection c = DriverManager.getConnection(
"jdbc:hsqldb:file:/opt/db/testdb;shutdown=true", "SA", "");
这个特性在测试中是很有用的。数据库有很多可选的属性,你能够在URL中指定很多属性,或者在第一次连接数据库的时候指定连接属性。




