Documentation

You are viewing the documentation for the 2.2.x release series. 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 によるデータベースアクセス


このドキュメントの翻訳は Play チームによってメンテナンスされているものではありません。 間違いを見つけた場合、このページのソースコードを ここ で確認することができます。 ドキュメントガイドライン を読んで、お気軽にプルリクエストを送ってください。