以编程方式嵌入Java h2数据库

时间:2020-03-06 14:56:35  来源:igfitidea点击:

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

Derby / JavaDB目前无法选择,因为它在系统属性中全局存储了属性。因此我们想到了h2.

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

问题是:这也可以与h2数据库类似吗?我们是否有任何代码示例?扫描h2页面,我没有找到示例。

解决方案

从下载中,我看到文件tutorial.html具有以下内容:

import org.h2.tools.Server;
...
// start the TCP Server
Server server = Server.createTcpServer(args).start();
...
// stop the TCP Server
server.stop();

是的,我们可以在嵌入式模式下运行H2. 我们只需要使用JDBC驱动程序并连接到这样的嵌入式URL(它们的示例):

This database can be used in embedded
  mode, or in server mode. To use it in
  embedded mode, you need to:

* 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,也可以这样做。有关更多信息,请参见此链接:

  • http://www.h2database.com/html/features.html#in_memory_databases

我们只需要在普通JDBC代码中使用特殊的URL,例如" jdbc:h2:mem:db1"。

如果出于某些原因需要在服务器模式下使用嵌入式H2数据库,则可以使用API​​手动进行操作
在http://www.h2database.com/javadoc/org/h2/tools/Server.html或者通过
将; AUTO_SERVER = TRUE添加到数据库URL。