H2Databaseを使用してみた
なんとなく軽量データベースを使用したくなったので、いじってみた。
使用するまでが一瞬、そして操作も簡単、組み込みも簡単と非常に手軽でした。
H2Databaseとは
H2 Databaseとは、Javaプラットフォーム上で動く、ACIDリレーショナルデータベース。オープンソース。速度が速いことを特徴としている。
http://ja.wikipedia.org/wiki/H2_Database
軽量なデータベースという認識でよいのだろうか。
似たような用途だと以下のDatabaseがあるらしい。
Groovyから使用
Grapeを使用すれば簡単。
newInstanceで「mem」を指定することでメモリ上に作成しています。
ここにPATHを指定することで保存されます。
@Grapes([ @Grab(group = 'com.h2database', module = 'h2', version = '1.3.173'), @GrabConfig(systemClassLoader = true) ]) import groovy.sql.Sql def sql = Sql.newInstance("jdbc:h2:mem:", "org.h2.Driver") sql.execute ''' create table project(id int, name varchar(10)) ''' sql.dataSet("project").add([id:1,name:"hoge"]) sql.dataSet("project").add([id:2,name:"huga"]) sql.rows("select * from project").each { println "id=${it.id}, name=${it.name}" }
モジュールを取得して使用
モジュール落として、解凍して実行すればOK
- H2 Database EngineのDownloadからzipで取得
- 解凍
- 「bin\h2.bat」か「bin/h2.sh」を実行
- ログイン画面が表示される
- 接続ボタン押下
- SQL実行
ログイン画面の「jdbc URL」内に「~/test」とあるけど、これはこのPATHにファイル作って保存するという事。
こんな風に「test.h2.db」、「test.trace.db」の2つのファイルが作成されます。
C:\Users\yamap>dir /B test* test.h2.db test.trace.db
尚、「テスト接続」を実行した段階でも作成されるらしいので注意。
DBを止めたい場合にはログイン画面 → 設定 → シャットダウン
jdbc接続
「bin/h2-1.3.173.jar」をClassPathに設定して、ログイン画面に設定されているように接続すれば接続可能です。
import groovy.sql.Sql def sql = Sql.newInstance("jdbc:h2:c:/Users/yamap/test", "sa", "", "org.h2.Driver") sql.rows("select * from project").each { println "id=${it.id}, name=${it.name}" }
ただ、コネクションは1つ?しか張れないようなので、2箇所目から接続しようとすると下記のような例外が発生します。
あくまでも1つのアプリケーションから使用するという前提のようです。
ERROR org.h2.jdbc.JdbcSQLException: データベースが使用中です: "Locked by another process".