Documentation

You are viewing the documentation for the 2.2.0 release in the 2.2.x series of releases. The latest stable release series is 2.4.x.

§SQL データベースアクセス

§JDBC コネクションプールの構成

Play には JDBC コネクションプールを管理するプラグインが同梱されています。これを使って、必要なだけデータベースへの接続設定を書くことができます。

DB プラグインを有効にするために、依存ライブラリに jdbc を追加しましょう:

val appDependencies = Seq(
  jdbc
)

そして conf/application.conf でコネクションプールの設定を行う必要があります。規約により、デフォルトの JDBC データソースは default という名前である必要があり、これに関連する設定属性名は db.default.driverdb.default.url のようになります。

もし設定が適切でない場合は、ブラウザ上ですぐに気づくことができるでしょう:

注意: 設定ファイルの文法において : は予約文字となっているため、JDBC の URL 属性をダブルクォーテーションで囲まなければならない場合があります。

§H2 データベースエンジン接続設定

# Default database configuration using H2 database engine in an in-memory mode
db.default.driver=org.h2.Driver
db.default.url="jdbc:h2:mem:play"
# Default database configuration using H2 database engine in a persistent mode
db.default.driver=org.h2.Driver
db.default.url="jdbc:h2:/path/to/db-file"

H2 データベースの URL 設定に関する詳細については H2 Database Engine Cheat Sheet を見てください。

§SQLite データベースエンジン接続設定

# Default database configuration using SQLite database engine
db.default.driver=org.sqlite.JDBC
db.default.url="jdbc:sqlite:/path/to/db-file"

§PostgreSQL データベースエンジン接続設定

# Default database configuration using PostgreSQL database engine
db.default.driver=org.postgresql.Driver
db.default.url="jdbc:postgresql://database.example.com/playdb"

§MySQL データベースエンジン接続設定

# Default database configuration using MySQL database engine
# Connect to playdb as playdbuser
db.default.driver=com.mysql.jdbc.Driver
db.default.url="jdbc:mysql://localhost/playdb"
db.default.user=playdbuser
db.default.pass="a strong password"

§コンソールで SQL 文を確認する方法

db.default.logStatements=true
logger.com.jolbox=DEBUG // for EBean

§複数データソースを設定する方法

# Orders database
db.orders.driver=org.h2.Driver
db.orders.url="jdbc:h2:mem:orders"

# Customers database
db.customers.driver=org.h2.Driver
db.customers.url="jdbc:h2:mem:customers"

JDBC ドライバの設定

Play には H2 データベースのドライバのみが同梱されています。そのため、本番環境にデプロイする際は必要なデータベースドライバを依存ライブラリに追加する必要があるでしょう。

例えば MySQL5 を使用する場合、接続するために以下の 依存性 を追加する必要があります:

val appDependencies = Seq(
  "mysql" % "mysql-connector-java" % "5.1.21"
)

あるいは Maven/Ivy2 リポジトリに必要なドライバが見つからない場合、Play プロジェクトの unmanaged な依存ライブラリ を配置するための場所である lib ディレクトリにドライバを放り込むことができます。

§JDBC データソースの参照

play.api.db パッケージ(の DB オブジェクト)は設定されたデータソースにアクセスする手段を提供します。

import play.api.db._

val ds = DB.getDataSource()

§JDBC コネクションの取得

JDBC コネクションを取得する方法は何種類かあります。これは最もシンプルなやり方:

val connection = DB.getConnection()

しかし、当然ながらこの方法では取得したコネクションをコネクションプールに返却するために、必ずどこかで close() を呼び出さなければなりません。あなたの代わりに Play にコネクションのクローズを管理させる別のやり方があります。

// access "default" database
DB.withConnection { conn =>
  // do whatever you need with the connection
}

default 以外のデータベースの場合は以下のようにします。

// access "orders" database instead of "default"
DB.withConnection("orders") { conn =>
  // do whatever you need with the connection
}

このコネクションはブロックの終わりで自動的にクローズされます。

Tip: StatementResultSet もコネクションと一緒にクローズされます。

少し違ったやり方として、コネクションの auto-commit を false に設定し、ブロック内をトランザクション制御する方法もあります。

DB.withTransaction { conn =>
  // do whatever you need with the connection
}

次ページ: Anorm によるデータベースアクセス