ぺーぺーSEのブログ

備忘録・メモ用サイト。

Javaで簡易DBのDerbyを使う

RailsSQLiteが勝手に出来てて動くのが羨ましくてJavaでも探してみた。
RDBMSインストールすんのめんどいし。

結論としてDerbyFlywayというのを使うことにした。
DerbyRDBMSのインストール無しでJDBCドライバさえあればさくっと使えるRDB
FlywayはJDBCドライバを使ってテーブル作成とかテストデータ登録とか簡単にできるツール

(1)プロジェクト用ディレクトリ作成
   ここでは「DerbySample」にした。
(2)「gradle init --type java-library」でもたたいてひな形作成
   デフォルトで作成される.javaファイルは消しとく。
(3)build.gradleを下記のように修正

■build.gradle

apply plugin: 'java'
apply plugin: 'flyway'

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'org.apache.derby:derby:10.11.1.1'
        classpath 'org.flywaydb:flyway-gradle-plugin:3.0'
    }
}

flyway {
    url = 'jdbc:derby:H:/Derby/SampleDB;create=true'
}

urlのところに「H:/Derby/SampleDB」と書いてある。
ここにDerbyで作成されるDBデータが格納される。

(4)プロジェクト用ディレクトリに「src/main/resources/db/migration」ディレクトリを作成
(5)上記ディレクトリに次のファイルを作成する

■V1__Create_person_table.sql

create table PERSON (
    ID int not null,
    NAME varchar(100) not null
);

テーブル作成用。

■V2__Insert_person_data.sql

insert into PERSON (ID, NAME) values (1, 'Taro');

データ登録用。

どうやらファイルPrefixの「V1__」「V2__」の順でSQLが実行されるっぽい。
※アンスコが2つあることに注意。

(6)DBデータ格納領域「H:/Derby」ディレクトリを作る

(7)「gradle flywayMigrate -i」コマンドを実行

ここまででSampleDBデータベース作成、テーブル作成、データ登録が完了している(はず)。
ここからは本当に出来てるか確認する。

(8)任意のディレクトリにDerbyのjarを置く

ここでは、「H:/Derby」ディレクトリに下記のjarを置いた

Maven Centralからでも入手して。

(9)「cd H:\Derby」コマンドを実行
(10)「set CLASSPATH=H:\Derby\derby-10.11.1.1.jar;H:\Derby\derbytools-10.11.1.1.jar;.」コマンドを実行

Derbyのjarをクラスパスに通しただけ。

(11)「java org.apache.derby.tools.ij」コマンドを実行

これでDerbyに接続した状態になる。

(12)「connect 'jdbc:derby:H:/Derby/SampleDB';」コマンドを実行

これでSampleDBに接続した状態になる。

(13)「select * from PERSON;」コマンドを実行

登録したデータが表示されれば成功。

disconnect;」でSampleDBの接続を解除して
exit;」でDerbyから抜ける。

Railsエコシステムのrakeほどじゃないけど少しは楽に開発できるかな。

参考:
Apache Derby Tutorial
http://db.apache.org/derby/papers/DerbyTut/index.html

Flyway (Gradle)
http://flywaydb.org/getstarted/firststeps/gradle.html