ikeike443のブログ

ソフトウェアビジネスに関心がある系のブログ

PlayframeworkでHSQLDBをファイルモードで使うTips

PlayframeworkでHSQLDBをファイルモードで使う際のTips。自分のための備忘。
後でPlayのコードを読んでパッチ書けそうなら書く。

まず、HSQLDBをファイルモードで使うには、conf/application.confを下記のように"db=fs"と編集

# Database configuration
# ~~~~~ 
# Enable a database engine if needed.
#
# To quickly set up a development database, use either:
#   - mem : for a transient in memory database (HSQL in memory)
#   - fs  : for a simple file written database (HSQL file stored)
db=fs

その状態で一度play runすると、dbフォルダにdb.propertiesというファイルが出来る。
下記参照。

#HSQL Database Engine 1.8.0.9
#Sat Mar 26 17:40:28 JST 2011
hsqldb.script_format=0
runtime.gc_interval=0
sql.enforce_strict_size=false
hsqldb.cache_size_scale=8
readonly=false
hsqldb.nio_data_file=true
hsqldb.cache_scale=14
version=1.8.0
hsqldb.default_table_type=memory
hsqldb.cache_file_scale=1
hsqldb.log_size=200
modified=yes
hsqldb.cache_version=1.7.0
hsqldb.original_version=1.8.0
hsqldb.compatible_version=1.8.0

で、なぜか初期状態ではhsqldb.default_table_type=memoryとなっていて、ファイルシステムにストアされない。
これバグっぽい気がするので後で質問投げてコード読んで見る。


ともあれ、db.propertiesを下記のようにcachedに変更する*1

hsqldb.default_table_type=cached

これでdbフォルダの下に、db.dataというバイナリファイルが出来るようになる。


EclipseのDBViewerプラグインを使っているのなら、下記のように接続文字列を設定すれば、ビジュアルに中身を確認できて便利。

jdbc:hsqldb:file:/path/to/playapp/db/db;shutdown=true

ちなみにユーザーは勝手に"SA"に設定され、パスワードは空で設定されるので、接続の設定もそのようにすればいいと思う。

以上

*1:プロパティファイルの内容については[http://www.hsqldb.org/doc/guide/ch04.html:title=ここが参考になる]