Play Slick の application.conf での設定一覧

Play Slick の設定したいけど、どこ見ればいいか分からなすぎ問題。

[Play公式](https://www.playframework.com/documentation/2.8.x/PlaySlick)を良く読んでみると

> for the complete list of configuration parameters that you can use to configure a database see the Slick ScalaDoc for [Database.forConfig](http://slick.typesafe.com/doc/3.1.0/api/index.html#slick.jdbc.JdbcBackend$DatabaseFactoryDef@forConfig%28path:String,config:com.typesafe.config.Config,driver:java.sql.Driver,classLoader:ClassLoader%29:JdbcBackend.this.Database)

と書かれている。forConfigを展開したところにある設定項目が、play slick での設定項目らしい。

# 一覧

※ 設定して試したわけではないので注意
※ 内容について、筆者のDBへの理解が浅く、直訳になってる箇所が多めなので注意。細かく確認したい場合は参考記載のリンクから公式たどってください。

プロパティ | 型| required | 内容 
--------|---|-----------|-----
numThreads | Int | optional, default: 20 | DBアクションの非同期実行のための、スレッドプール内の同時スレッド数。より詳細な情報は [HikariCP wiki](https://github.com/brettwooldridge/HikariCP/wiki/About-Pool-Sizing)を参照。Slickでの非同期実行は、最大接続プールサイズではなく、スレッドぷプールサイズ（これ）を適宜調整する必要があることに注意
queueSize | Int | optional, default: 1000 | 全てのスレッドがビジー状態の時に、DBアクションを入れておくキューのサイズ。
url | String | required | JDBC URL
driver | String | optional | ロードするJDBCドライバのクラス
user | String | optional | 接続するDBのユーザー名
password | String | optional | 接続するDBのパスワード
isolation | String | optional | トランザクション分離レベル。許可されている値：NONE, READ_COMMITTED, READ_UNCOMMITTED, REPEATABLE_READ, SERIALIZABLE
catalog | String | optional | デフォルトカタログ
readOnly | Boolean | optional | read only フラグ
properties | Map | optional | ドライバーまたはデータソースに渡すプロパティ
dataSourceClass | String | optional | JDBCドライバによって提供されるDataSourceクラスの名前。このキーが設定されている場合、urlは無視される(データベース接続を構成するには properties を利用する必要がある)
maxConnections | Int | optional, default: numThreads * 5 | コネクションプールの最大接続数
minConnections | Int | optional, default: numThreads と同じ数 | コネクションプールに保持する接続の最小数
connectionTimeout | Duration | optional, default: 1s | コネクションタイムアウトまでの時間。タイムアウトした場合は SQLExceptionがスローされる。
validationTimeout | Duration | optional, default: 1s | 接続活性テストがタイムアウトするまでの最大時間。1000msが最小値
idleTimeout | Duration | optional, default: 10min | コネクションプール内でコネクションがアイドル状態を維持できる最大時間。0に設定すると、アイドル状態のコネクションはコネクションプールから削除されなくなる
maxLifetime | Duration | optional, default: 30min | コネクションプール内のコネクションの最大生存時間。
connectionInitSql | String | optional | 新しい接続が作成されるたびに、プールに追加する前に実行されるSQLステートメント
initializationFailFast | Boolean | optinal, default: false | プールが初期接続で正常にシードできなかった場合に、プールが「fail fast」するかどうかを制御する。プールの起動時に接続を作成できなかった場合、RuntimeException がスローされる。minConnections が 0 の場合、このプロパティは影響を受けない。
leakDetectionThreshold | Duration | optional, default: 0 | 接続漏れの可能性があることを示すメッセージがログに記録されるまでに、プールから接続が抜ける時間を指定する。値が 0 の場合、リーク検出は無効になる。リーク検出を有効にするための最低許容値は 10 秒。
connectionTestQuery | String | optional, default: 0 | データベースへの接続がまだ生きていることを確認するために、プールから接続を取得する直前に実行されるステートメント。設定されていない場合は、代わりにJDBC4 Connection.isValid()メソッドが使用されます(通常はこれが望ましい)。
registerMbeans | Boolean | optional, default: false | JMX管理Bean（「MBean」）が登録されているかどうか。



#参考

* [Using Play Slick (2.8.x) - Play Framework Documentation](https://www.playframework.com/documentation/2.8.x/PlaySlick)
* [slick.jdbc.JdbcBackend DatabaseFactoryDef](https://scala-slick.org/doc/3.1.0/api/index.html#slick.jdbc.JdbcBackend$DatabaseFactoryDef@forConfig%28path:String,config:com.typesafe.config.Config,driver:java.sql.Driver,classLoader:ClassLoader%29:JdbcBackend.this.Database) これの forConfig を展開したところにあるkeyが設定できるもの