Documentation

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

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

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

Play 2.0 には 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 2.0 には H2 データベースのドライバのみが同梱されています。このため、本番環境にデプロイするには、必要なデータベースドライバを依存性として追加する必要があるでしょう。

例えば MySQL5 を使用する場合、コネクタのために 依存性 を追加する必要があります:

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

リポジトリにドライバが見つからない場合は、プロジェクトの 依存性が管理されない lib ディレクトリにドライバを放り込むことができます。

§JDBC データソースの参照

play.api.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 にして、ブロックを 1 トランザクションとさせる方法もあります。

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

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