hsqldb数据库是一款纯Java实现的开源免费数据库,相对其他数据库来说,体积非常小,使用方便,非常利于在测试环境中使用,无需复杂的数据库配置。
hsqldb数据库引擎有几种服务器模式:Server模式,WebServer模式,Servlet模式,Standalone模式,Memory-Only模式。
其中最常用的要数Server模式了,首先需要从网站从http://www.hsqldb.org/下载一个hsqldb的稳定版本,当前稳定版本是2.3.2,启动Server模式就类似启动mysql,oracle数据库一样,数据库启动后就作为一个系统服务存在,此时就可以使用数据库工具通过jdbc的方式访问,启动脚本类似:
java -cp hsqldb.jar org.hsqldb.Server -database.0 ./db/test -dbname.0 test
后面的参数含义如下,-database.index后面接数据库文件(如果当前系统中并不存在该数据文件,就会默认新建一个空文件,支持相对路径的方式,本例子中就会将数据文件建立在相对文件夹db中); -database.index后面接该index数据库的名称(访问数据库时会使用到该名称)。
由于启动hsqldb时可以看出,使用了index,在一次启动的过程中,就可以同时启动多个数据库实例。
其他模式并不是很常用,但是可以稍微了解一下。比如WebServer模式就是Server模式的扩展,支持http协议;Servlet模式可以允许通过Servlet容器来访问数据库;Standalone模式不能通过网络来访问数据库,主要在一个JVM中使用。
hsqldb的zip包中自带了一个简单方便的数据库管理工具,Swing界面的DatabaseManagerSwing,该工具可以通过jdbc访问多种数据库(不仅限于hsqldb哦,还可以连接MySQL,Oracle等数据库),通过运行以下的命令可以打开主界面来访问数据库:
java -cp hsqldb.jar org.hsqldb.util.DatabaseManagerSwing
打开后主界面如下:
由于我们是以Server模式启动的,需要选择HSQL Database Engine Server模式启动:
启动的Server默认用户是SA,缺省密码为空,连接成功后,就可以查看到该数据库中的所有数据表,并可以通过执行sql的方式查看数据:
我们在测试的是一个简单的web项目,在测试场景中频繁启动hsqldb比较麻烦。既然hsqldb是一个非常轻量级的文件数据库,我们可以将hsqldb的启动绑定在Web容器的生命周期中。
Web应用中的监听器可以实现这一目标,ServletContextListener的实现类能够帮助监听ServletContext一生中的两个关键事件:初始化以及销毁,能够帮助我们:
- 在容器初始化是得到通知,并获得上下文初始化对象,并启动hsqldb数据库;
- 容器销毁时,新建hsqldb连接,关闭hsqldb数据库;
实现后的Listener类似如下(本例子中硬编码,建议将其配置到web.xml中的content-param中):
public class HsqlDbListener implements ServletContextListener { private static final Logger LOG = Logger.getLogger(HsqlDbListener.class); @Override public void contextInitialized(ServletContextEvent servletContextEvent) { LOG.info("start hsql db server..."); startServer(); } /** * java -cp hsqldb.jar org.hsqldb.Server -database.0 testdb -dbname.0 test */ private void startServer() { Server server = new Server(); server.setDatabaseName(0, "test"); server.setDatabasePath(0, "/Users/mazhiqiang/develop/server/hsqldb-2.3.2/hsqldb/lib/testdb"); server.setPort(9002); server.setSilent(true); server.setTrace(true); server.start(); } @Override public void contextDestroyed(ServletContextEvent servletContextEvent) { try { stopServer(); } catch (BusinessException e) { throw new BusinessRuntimeException(e); } LOG.info("hsql db server stopped."); } private void stopServer() throws BusinessException { Connection connection = null; try { Class.forName("org.hsqldb.jdbcDriver"); connection = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost/test"); Statement statement = connection.createStatement(); statement.execute("SHUTDOWN;"); } catch (ClassNotFoundException e) { throw new BusinessException(e); } catch (SQLException e) { throw new BusinessException(e); } }
并将该Listener配置到web.xml中,就可以跟随上下文一起启动。
<listener> <listener-class>xxx.HsqldbListener</listener-class> </listener>
相关推荐
图示和说明详细介绍Hsqldb安装与使用.
hsqldb确实是个好东西,对于系统演示,开发等都很方便。
简单的创建两个例子,如何创建hsqldb,如何使用hsqldb查询数据等。
里面有hsqldb.jar包,一份中文使用说明,服务器和控制台. 作测试十分好用!
HSQLDB是一个开放源代码的JAVA数据库,其具有标准的SQL语法和JAVA接口,它可以自由 使用和分发,非常简洁和快速的。具有SERVER模式,进程内模式(IN-PROCESS)和内存模式 (MEMORY-ONLY)三种。运行HSQLDB需要HSQLDB.JAR...
hsqldb数据库下载,很好用,简易的内存数据库,特别适合初学者。
HSQLDB简介和基本使用 HSQLDB简介和基本使用 HSQLDB简介和基本使用
hsqldb jdbc driver适合于hsqldb
HSQLDB 1.8.0
NULL 博文链接:https://qidaoxp.iteye.com/blog/601219
数据库连接 hsqldb1.7.1.jar
hsqldb的最新1.9.0版本,支持windows操作系统
hsqldb for jdk1.5因为hsqldb的2.0版本以上都是jdk1.6进行编译的,我提供的这个2.25版本的是jdk1.5编译的。
hsqldb可能需要的额外jar包 Additional Jar files needed for hsqldb.
HSQLDB中文手册
hsqldb jar
HSQLDB中文文档,能够提高数据的处理速度。
hsqldb-2.4.0
HyperSQL User Guide HyperSQL Database Engine (HSQLDB) 2.2 hsqldb-2.2.9用户手册