まじめにゆいがどくそん

仕事関連の真面目な記事が満載です、多分。

Play framework 開発中のデータベース参照方法

概要

Play! frameworkでは「H2インメモリーデータベース」を手軽に使用できるため、ストレスなくデータベースの構成をあれこれ試行錯誤できます。

H2 インメモリーデータベースは、Play が再起動した時に、evolution を 1 から実行できるため、 開発時に非常に便利です。

Developing-with-the-H2-Databaseより引用


データベースの構成をあれこれ試行錯誤しながら開発するのってどうよ、というツッコミは聞かなかったことにします :P

ふと、Playを実行中にメモリー上のデータベースに作られたテーブルの構成やデータを直接見たいと思い、あれこれググって得た成果をまとめてみます。


Play framework 開発中のデータベース参照方法

application.conf のデータベース定義

db.default.driver=org.h2.Driver
db.default.url="jdbc:h2:mem:play;MODE=MYSQL"
db.default.user=sa
db.default.password=""

「MODE=MYSQL」の部分は本番環境に合わせて。
他のデータベースの定義は下記リンクを参照してください。
Developing-with-the-H2-Database

Playアプリケーション実行

コンソール(端末)を起動して、いつものように play を起動します。

$ play
[info] Loading project definition from /path/to/play-app/project
[info] Set current project to play-app (in build file:/path/to/play-app/)
       _            _
 _ __ | | __ _ _  _| |
| '_ \| |/ _' | || |_|
|  __/|_|\____|\__ (_)
|_|            |__/

play! 2.1.3 (using Java 1.7.0_25 and Scala 2.10.0), http://www.playframework.org

> Type "help play" or "license" for more information.
> Type "exit" or use Ctrl+D to leave this console.

h2-browser 実行

h2-browser コマンドを実行します。

[play-app] $ h2-browser
Web Console server running at http://127.0.1.1:8082 (others can connect)
TCP server running at tcp://127.0.1.1:9092 (only local connections)
PG server running at pg://127.0.1.1:5435 (only local connections)
[play-app] $ Gtk-Message: Failed to load module "overlay-scrollbar"
既存のブラウザ セッションに新しいウィンドウが作成されました。

h2-browser コマンドを実行すると、OS既定のブラウザ上に「H2コンソール」画面が表示されます。
画面上の各項目は次の表のように設定してください。

項目 備考
保存済設定 「Generic H2 (Embedded)」を選択  
設定名 Generic H2 (Embedded) 任意の文字列
ドライバクラス org.h2.Driver application.conf に定義した db.default.driver の値
JDBC URL jdbc:h2:mem:play;MODE=MYSQL application.conf に定義した db.default.url の値
ユーザ名 sa application.conf に定義した db.default.user の値
パスワード (なし) application.conf に定義した db.default.password の値

f:id:nilfigo:20130910172250p:plain

Webアプリケーション起動

h2-browser コマンドを実行後、Enterキーでplayのプロンプトに戻ります。
戻ったら run や ~run、start などでWebアプリケーションを起動します。

[play-app] $ run

--- (Running the application from SBT, auto-reloading is enabled) ---

[info] play - Listening for HTTP on /0:0:0:0:0:0:0:0:9000

(Server started, use Ctrl+D to stop and go back to the console...)

Evolution

ブラウザで http://localhost:9000/ にアクセスして「evolution」な画面が表示されたら、いつものように【Apply this script now!】ボタンをクリックします。

f:id:nilfigo:20130910172306p:plain

H2コンソールからデータベースに接続

【Apply this script now!】ボタンのクリックにより正常にデータベースが生成されてWebアプリケーションの画面が表示されたのを確認した後に、さきほどの「H2コンソール」画面で【接続】ボタンをクリックすると、データベースを操作する画面が表示されます。

f:id:nilfigo:20130910172757p:plain