六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 731|回复: 0

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

[复制链接]

升级  15.33%

17

主题

17

主题

17

主题

秀才

Rank: 2

积分
73
 楼主| 发表于 2013-1-30 02:06:20 | 显示全部楼层 |阅读模式
在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.jdbcDriverdb.url=jdbc:hsqldb:db/testdb.user=sadb.pw=
上面第二行就隐含了hsqldb要运行在standalone模式下。也可以写成如下的方式:
db.url= jdbc:hsqldb:file:c:/eclipse/springmvc/db/test


ant 任务:

    <target name="loadData">        <echo message="LOAD DATA USING: ${db.driver} ${db.url}"/>        <sql driver="${db.driver}"             url="${db.url}"             userid="${db.user}"             password="${db.pw}"             onerror="continue">              <classpath refid="master-classpath"/>        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        </sql>     </target>    <target name="clearData">        <echo message="CLEAR DATA USING: ${db.driver} ${db.url}"/>        <sql driver="${db.driver}"             url="${db.url}"             userid="${db.user}"             password="${db.pw}"             onerror="continue">              <classpath refid="master-classpath"/>        DELETE FROM products;        </sql>     </target>
在每次单元测试之前,先执行clearData和loadData这两个任务。这样可以重新构造正确的测试数据。(maybe用in-memory模式更理想)

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

缺省时,数据也是保存在memory中的,如果想要持久化数据,需要在关闭vm之前执行hsqldb的命令 SHUTDOWN。
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表