Javaで簡易DBのDerbyを使う
RailsでSQLiteが勝手に出来てて動くのが羨ましくてJavaでも探してみた。
RDBMSインストールすんのめんどいし。
結論としてDerbyとFlywayというのを使うことにした。
DerbyはRDBMSのインストール無しで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