web-dev-qa-db-ja.com

H2の埋め込みデータベースはどこにデータを保存しますか?

だから私は最近、データベースがどのように機能するか、SQL ectをどのように使用するかについて学び始めました。そして、Javaアプリケーション(特にH2データベース)への組み込みデータベースの実装を開始することを決定し、コーディングしているコンピューターでかなりうまく機能しているように見えました。

コーディングを続行するために別のコンピューターに移動したとき、埋め込みデータベースファイル(h2-*。jar)を移植しても、最初のコンピューターで作成した準備済みのテーブルはすべて2番目のコンピューターに存在しないことに気付きました。どういうわけか、データベースエンジンを介して生成された実際のデータは埋め込みデータベースファイルにも保存されるという先入観を抱いていました。

だから私の質問は、データベースからのデータは実際にどこに保存されているのですか?すでに数千のレコードを含むデータベースを準備し、実際のアプリケーションで配布することは可能ですか?

また、最初のコンピューターのデータベースに接続する方法は、JDBC接続、つまりURL:JDBC:h2:〜/ testであり、2番目のコンピューターのデータベースに接続しようとしても存在しなかったことに言及する必要があります。

ありがとう!

43
Sammy Guergachi

[〜#〜] faq [〜#〜] を読む:

データベースファイルはどこに保存されますか?

jdbc:h2:~/testなどのデータベースURLを使用する場合、データベースはユーザーディレクトリに保存されます。 Windowsの場合、これは通常C:\Documents and Settings\<userName>またはC:\Users\<userName>です。ベースディレクトリが設定されていない場合(jdbc:h2:./testのように)、データベースファイルはアプリケーションが起動されたディレクトリ(現在の作業ディレクトリ)に保存されます。スタートメニューからH2コンソールアプリケーションを使用する場合、これは<Installation Directory>/binです。ベースディレクトリは、データベースURLで設定できます。固定パスまたは相対パスを使用できます。 URL jdbc:h2:file:./data/sampleを使用する場合、データベースはディレクトリデータ(現在の作業ディレクトリに相対的)に格納されます。まだ存在しない場合、ディレクトリは自動的に作成されます。完全修飾ディレクトリ名(およびWindowsの場合はドライブ名)を使用することもできます。例:jdbc:h2:file:C:/data/test

75
The Nail

h2-*.jarは、データベースの単なるエンジン(コード)です。これは読み取り専用であり、情報を保存しません。 H2のデータは、指定されたファイルのメモリまたはディスクに保存できます。実際に1つを指定しています:

JDBC:h2:~/test/

データベースは、ホームディレクトリのtestサブディレクトリの下にあります。これらのファイルを別のコンピューターのホームディレクトリにコピーするだけで、同じURLを使用している限りH2はそれらを見つけます。

11

Windowsでは、次の値を使用してJDBC URLを設定する必要があります。

JDBC URL: jdbc:h2:mem:testdb
0