HSQLDB在文件模式File Mode下数据的持久化

HSQLDB(HyperSQL DataBase)在文件模式File Mode下数据的持久化的相关知识是本文我们主要要介绍的内容,对于任何Embedded DB,我们都期望它能满足以下需求:

与标准SQL兼容,使用标准SQL可以操作数据并进行持久化;

使用简单,就Java而言,它能够和应用处于同一个JVM中。

HSQLDB是一款基于Java的非常优秀的嵌入式数据库。它提供三种使用模式:Mem Mode、File Mode和Server Mode。

Mem Mode只在内存中操作,不对数据进行持久化;使用Server Mode数据库和应用不在一个JVM中,也就是说,和Oracle, MySQL一样,在启动应用前必须先启动数据库,失去嵌入式数据库的意义了。File Mode能够满足上文提出的两个需求。它能够将应用在本次启动中作出的变化持久化,以便下次启动应用后能够基于之前的信息。在默认使用下,File模式是不进行持久化的,需要进行如下配置才能使其持久化:一个是配置shutdown连接属性,另一个是配置hsqldb.write_delay连接属性,接下来我们分别说明。

配置shutdown连接属性

实例代码如下:

connection = DriverManager.getConnection("jdbc:hsqldb:file:chenzhe;shutdown=true;","SA","");

注意:使用该配置,只有在connection断开时才会进行持久化,如果在代码中没有close连接,修改的数据就不会被持久化,这也就是有些用户抱怨这种方式不工作的原因。

配置hsqldb.write_delay连接属性

实例代码如下:

connection=DriverManager.getConnection("jdbc:hsqldb:file:feng;hsqldb.write_delay=false;","SA","");   

使用该模式,无需断开连接,当对数据进行修改后,很快会被持久化,但也正因为此,使用该配置性能稍差些。


从HSQLDB自带的客户端访问


java -cp hsqldb.jar org.hsqldb.util.DatabaseManager

cmd进入在hsqldb.jar目录,执行上面的命令可打开客户端。


以文件模式打开数据库,可在链接界面中URL中输入 jdbc:hsqldb:file:DataBaseName ,DataBaseName是要打开的数据库名称。


 

注意事项

无论是在JDBC中还是在HSQLDB自带的客户端中,建表以后,必须执行了insertupdate修改表数据后,table才能创建成功,否则当关闭程序或客户端后,重新打开表又不存在了。这一点很坑爹,可能是HSQLDB的BUG。