谈一下纯java数据库hsqldb的standalone(in-process)模式

阅读更多
在hsqldb的官方文档中,介绍standalone的篇幅很少,总共100多页的文档,这种模式只有不到一页。本来这种模式用到的机会比较小,但碰巧这两天看spring mvc(spring官方的那个step-by-step的例子),这个例子中的hsqldb正是运行在standalone模式下。

这种模式的特点有2个。
第一个特点,顾名思义,standalone。也就是这个数据库是可以不依赖其它任何东西,独立存在,包括数据库引擎。和in-memory模式相比,这种模式的数据是可以持久化的,存在形式就是几个文件。和server方式比,要使用这种模式下的数据库不需要启动任何的server或者监听。
第二个特点,同样可以顾名思义,in-process。这种模式下,数据库引擎和应用程序跑在一个jvm中。对大部分应用,这种模式可以加快速度,因为数据不再需要在网络中传输。但是这种方法也有个缺点,就是process之外的程序,比如database manager,无法看到数据库中的数据。

hsqldb官方推荐:开发的时候用server模式,部署到实际生产环境的时候才用standalone模式。

下面是springmvc step by step中的例子:

数据库配置信息:
db.driver=org.hsqldb.jdbcDriver
db.url=jdbc:hsqldb:db/test
db.user=sa
db.pw=

上面第二行就隐含了hsqldb要运行在standalone模式下。也可以写成如下的方式:
db.url= jdbc:hsqldb:file:c:/eclipse/springmvc/db/test 



ant 任务:

    
        
          
            

        INSERT INTO products (id, description, price) values(1, 'Lamp', 5.78);
        INSERT INTO products (id, description, price) values(2, 'Table', 75.29);
        INSERT INTO products (id, description, price) values(3, 'Chair', 22.81);
        COMMIT;
        SHUTDOWN

         
    


    
        
          
            

        DELETE FROM products;

         
    		

在每次单元测试之前,先执行clearData和loadData这两个任务。这样可以重新构造正确的测试数据。(maybe用in-memory模式更理想)

另外,有一点需要特别注意的。

缺省时,数据也是保存在memory中的,如果想要持久化数据,需要在关闭vm之前执行hsqldb的命令 SHUTDOWN。


你可能感兴趣的:(HSQLDB,Java,JDBC,Eclipse,Struts)