web-dev-qa-db-ja.com

Java h2データベースをプログラムで埋め込む

現時点では、組み込みデータベースとして [〜#〜] hsqldb [〜#〜] を使用していますが、データ量が増えるにつれてメモリフットプリントが少ないデータベースを検索します。

Derby/JavaDB は、システムプロパティにグローバルにプロパティを格納するため、現時点ではオプションではありません。したがって、 h2 について考えました。

HSQLDBを使用しながら、サーバーオブジェクトを作成し、パラメーターを設定して開始しました。これは here で説明されています(org.hsqldb.test.TestBaseクラスで例として示されています)。

問題は、これもh2データベースと同様に実行できるかどうかです。そのためのコードサンプルはありますか? h2ページをスキャンしても、例は見つかりませんでした。

30
Georgi

ダウンロードから、ファイルtutorial.htmlにこれがあることがわかります

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

はい、組み込みモードで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:h2:mem:db1"のような通常のJDBCコードで特別なURLを使用する必要があるだけです。

70
Alex Miller

何らかの理由でサーバーモードで埋め込みH2データベースが必要な場合は、 http://www.h2database.com/javadoc/org/h2/tools/Server.html のAPIを使用して手動で行うことができます。 =-または、データベースのURLに; AUTO_SERVER = TRUEを追加します。

5
javydreamercsw