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=ここが参考になる]