§SQL データベースアクセス
§JDBC コネクションプールの構成
Play には JDBC コネクションプールを管理するプラグインが同梱されています。これを使って、必要なだけデータベースへの接続設定を書くことができます。
DB プラグインを有効にするために、依存ライブラリに jdbc を追加しましょう:
val appDependencies = Seq(
jdbc
)
そして conf/application.conf
でコネクションプールの設定を行う必要があります。規約により、デフォルトの JDBC データソースは default
という名前である必要があり、これに関連する設定属性名は db.default.driver
や db.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:
Statement
とResultSet
もコネクションと一緒にクローズされます。
少し違ったやり方として、コネクションの auto-commit を false
に設定し、ブロック内をトランザクション制御する方法もあります。
DB.withTransaction { conn =>
// do whatever you need with the connection
}
次ページ: Anorm によるデータベースアクセス
このドキュメントの翻訳は Play チームによってメンテナンスされているものではありません。 間違いを見つけた場合、このページのソースコードを ここ で確認することができます。 ドキュメントガイドライン を読んで、お気軽にプルリクエストを送ってください。