在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 任务:
<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。
分享到:
- 2007-01-09 17:40
- 浏览 11848
- 评论(17)
- 论坛回复 / 浏览 (17 / 12727)
- 查看更多
相关推荐
2. **In-Process(Standalone)模式**:此模式下,数据库仅在当前线程中运行,速度较快,但不支持多线程访问。 3. **In-Memory模式**:数据存储在内存中,不持久化到磁盘,适用于临时测试。 **HSQldb管理工具**: ...
- **轻量级**:作为一个纯Java数据库,HSQLDB无需额外的服务器软件即可运行。 - **高性能**:尽管体积小巧,但在数据处理速度方面表现优异。 - **兼容性**:支持大部分SQL-92及部分SQL-99标准特性,并且与JDBC API...
2. **In-Process(Standalone)模式**:当应用程序启动时,数据库也启动,适用于单线程或本地开发。JDBC连接示例: ```java Connection c = DriverManager.getConnection("jdbc:hsqldb:file:/opt/db/testdb", "sa...
- **In-Process (Standalone)模式**:在这种模式下,数据库与应用程序在同一进程中运行,访问速度最快。但是,它仅限于当前进程,其他工具无法同时访问。JDBC连接字符串类似于`jdbc:hsqldb:file:/opt/db/testdb`。 ...
- **In-Process (Standalone)模式**:适合单个JVM内使用。 - **Memory-Only数据库**:数据仅存在于内存中,不会持久化保存。 - **基本操作**: - **关闭数据库**:使用`SHUTDOWN`命令或API。 - **创建新数据库**...
HSQLDB支持多种运行模式,包括SERVER模式、In-Process(Standalone)模式等。 - **SERVER模式**: - 使用`HsqldbServer`启动服务端。 - 可以通过`HsqldbWebServer`和`HsqldbServlet`来提供Web界面和Servlet支持。...
- **服务器模式**:涵盖了HSQLDB支持的各种服务器模式,包括HSQLDB Server、HSQLDB Web Server、HSQLDB Servlet以及In-Process(Standalone) Mode等。每种模式都有其特定的应用场景和优势。 - **HSQLDB Server**:...
- **In-Process(Standalone)模式**:HSQLDB可以直接嵌入到应用程序中运行,不需额外的服务器进程,简化了部署流程。 - **Memory-Only数据库**:在内存中运行的数据库实例,提供极高的读写性能,但数据不会持久化保存...
- **In-Process(Standalone)模式**:适合于单个Java应用内部使用,无需额外的网络配置。 - **Memory-Only数据库**:所有的数据都存储在内存中,适用于测试或快速原型设计。 - **数据库操作** - **启动和关闭...