34

目前我们使用HSQLDB作为嵌入式数据库,但是随着数据量的增长,我们会寻找内存占用更少的数据库。

Derby / JavaDB目前不是一个选项,因为它在系统属性中全局存储属性。所以我们想到了h2

当我们使用 HSQLDB 时,我们创建了一个服务器对象,设置参数并启动它。这在此处进行了描述(并在 org.hsqldb.test.TestBase 类中作为示例给出)。

问题是:这也可以与 h2 数据库类似吗?你有任何代码示例吗?扫描h2-page,我没有找到一个例子。

4

3 回答 3

73

是的,您可以在嵌入式模式下运行 H2。您只需使用 JDBC 驱动程序并连接到这样的嵌入式 url(他们的示例):

该数据库可以在嵌入式模式下使用,也可以在服务器模式下使用。要在嵌入式模式下使用它,您需要:

* Add h2.jar to the classpath
* Use the JDBC driver class: org.h2.Driver
* The database URL jdbc:h2:~/test opens the database 'test' in your user home directory

使用 JDBC 连接到嵌入式 H2 数据库的示例(改编自http://www.h2database.com/javadoc/org/h2/jdbcx/JdbcDataSource.html):

import org.h2.jdbcx.JdbcDataSource;
// ...
JdbcDataSource ds = new JdbcDataSource();
ds.setURL("jdbc:h2:˜/test");
ds.setUser("sa");
ds.setPassword("sa");
Connection conn = ds.getConnection();

如果您希望在纯内存/嵌入式模式下使用 H2,您也可以这样做。有关更多信息,请参阅此链接:

您只需要在普通 JDBC 代码中使用一个特殊的 URL,例如“jdbc:h2:mem:db1”。

于 2008-09-30T22:41:32.200 回答
24

从下载中,我看到文件 tutorial.html 有这个

import org.h2.tools.Server;
...
// start the TCP Server
Server server = Server.createTcpServer(args).start();
...
// stop the TCP Server
server.stop();
于 2008-09-30T21:46:58.883 回答
5

如果由于某种原因您需要在服务器模式下嵌入 H2 数据库,您可以使用http://www.h2database.com/javadoc/org/h2/tools/Server.html上的 API 手动完成- 或附加 ;AUTO_SERVER =TRUE 到数据库 URL。

于 2010-09-27T18:14:27.753 回答