15

私はSpringを使用してJavaで小さなデモアプリケーションを書いています。これはデータベースにアクセスする必要があります。異なるマシンで実行する必要があり、実際のデータベースをセットアップするのは非常に手間がかかります。したがって、組み込みのものを使用したいと思います。

DBには、特定のスキーマ(2つのテーブル)といくつかの(ごく少数の)事前定義されたエントリがあります。インメモリデータベースを起動し、テーブルを作成してデータを入力する簡単な方法を探しています。これはすべて、Springコンテキストの初期化中に発生するはずです。

私のアプローチは、データベースとしてH2を使用し、次にSpringBatchを使用してcsvファイルまたはxmlファイルからデータをロードすることです。しかし、私はこれを達成するためのより簡単な方法があるかもしれないと思っていました。これをすぐに実行できるデータベース/フレームワーク/ツールはありますか?

必要なものをすべてセットアップするには、わずかなSQLコマンドしか必要ありません。春の環境でこれをできるだけ簡単に行う方法を探しています。

4

4 に答える 4

18

Springには組み込みデータベースのサポートがいくつか組み込まれています。ドキュメントの組み込みデータベースのサポート を参照してください。

于 2011-01-12T16:21:55.670 に答える
6

H2を使用すると、データベースURL自体でデータベースを初期化できます。例:初期化するすべてのスクリプトを含むSQLスクリプト「start.sql」があります。これには、CSVファイルからのテーブルの作成も含まれます。次に、の形式のデータベースURLを使用しますjdbc:h2:~/temp/test;init=runscript from '~/temp/start.sql'。start.sqlは次のようになります(これはとにかく私が取り組んでいる例です-CSVファイルからテーブルを作成する方法を示しています):

create table if not exists location(id int primary key, country varchar, 
region varchar, city varchar, postalCode varchar, latitude float, longitude float, 
metroCode varchar, areaCode varchar) 
as select * from csvread('~/Downloads/GeoLiteCity/GeoLiteCity-Location.csv');

create table if not exists blocks(start long, end long primary key, location int) 
as select * from csvread('~/Downloads/GeoLiteCity/GeoLiteCity-Blocks.csv');

create alias if not exists ip2id deterministic as $$
long ip2id(String s) {
  String[] x = s.split("\\.");
  return (Long.parseLong(x[0]) << 24) + (Long.parseLong(x[1]) << 16) +
    (Long.parseLong(x[2]) << 8) + Long.parseLong(x[3]);
} $$;

create alias if not exists id2ip deterministic as $$
String id2ip(long x) {
  return (x >> 24) + "." + ((x >> 16) & 255) + "." + 
      ((x >> 8) & 255) + "." + (x & 255);
} $$;
于 2011-01-13T05:23:16.830 に答える
4

Spring 3では、 jdbc:embedded-database要素を使用して、3から始まる組み込みデータベースのサポートが追加されました。詳細については、このチュートリアルをお読みください。

また、JDK6にバンドルされているDerbyの使用をお勧めします。

于 2011-01-12T16:21:01.067 に答える
1

HSQLDBは​​良い選択です。

于 2011-01-12T16:21:30.250 に答える