hsqldb

hsqldb是纯java数据库,启动数据库只需引入hsqldb的jar包即可,非常方便,居家旅行必备,非常适合开发一些小型应用。

hsql运行模式有三种:

1,在内存中运行,数据不写入磁盘。

启用内存模式只需在connection的url设置为:jdbc:hsqldb:mem:dbname即可,如:

DriverManager.getConnection("jdbc:hsqldb:mem:mydb","sa","")

2, In-Process (Standalone)模式:

在此模式下数据库与应用运行在同一个jvm中,可以随应用一同启动,可以将数据写入磁盘。但是只能在一个进程中运行,不能通过其他工具同时连接。

启用此模式设置connection的url为:jdbc:hsqldb:file:dbaddr”,dbaddr为数据库的地址,在初次连接时,会自动建立数据库相关文件,默认登录用户名为sa。

 con =DriverManager.getConnection("jdbc:hsqldb:file:D:/hsqldb/testdb","sa","");

此模式数据写入时,也是在内存中,当一定时间周期后,或者在关闭应用时,调用“shutdown”命令,数据才会写入磁盘,如:

statement.executeUpdate("shutdown")

或者在connection的url后面添加“;shutdown=true”:

 con =DriverManager.getConnection("jdbc:hsqldb:file:D:/hsqldb/testdb;shutdown=true
","sa","");

另外可以设置 WRITE_DELAY参数来实时写入数据(默认是20):

 statement.execute("SET WRITE_DELAY 0 MILLIS");

在Standalone模式下,jvm会在每隔WRITE_DELAY设置的时间后将内存中的数据写入到硬盘文件一次。设置shutdown应该是在应用关闭时候将内存数据写入硬盘script的文件,如果未运行shutdown或者设置”shutdown=true”参数,而直接关闭jvm的情况下可能会导致数据最后写入硬盘后的数据不能及时写入文件。而设置WRITE_DELAY是将延迟写入时间设置为0,所以数据实时写入了,但是如果写入频繁的情况下,可能IO开销会很高。该结论是否正确,未做深入研究。
3,server模式,另起一个服务,可以通过其他工具链接。

附:hsqldb用户指南

hsqldb》上有 7 条评论

    1. 李朝

      小型应用使用hsqldb很方便,相当于windows的access数据库,不需要另外安装,只需要把jar包加入到项目就行了,可以随应用一起打包、部署、启动

      回复
  1. _Zhijun

    还有你这个评论插件同步到微博的时候,你可以设置微博的内容的吗?我同步后发现就是自己的评论+url连接,感觉好蠢的,别人都不知道你发的什么

    回复

发表评论

电子邮件地址不会被公开。 必填项已用*标注