Documentation

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


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