具体的にやること
以下の環境で実行する
- Scala(2.11系)
- slick(3.0.0)
- h2(1.4.199)
マルチスレッドの場合、スレッドプールのサイズはパフォーマンスに影響するため慎重に決定する必要があるが、今回は議論しない。
依存ファイルを追加する
sbtプロジェクトなので、以下のようにsbtに対してライブラリを追加する。
// バージョンは自身のslickのバージョンに合わせる。(今回はslick3.0.0を使用) "com.typesafe.slick" %% "slick-hikaricp" % "3.3.0"
HikariCP使用のための実装
HikariConfigに設定を保存する。
具体的な項目は以下が参考になる。 github.com
今回はmapでconfigを定義し、dbインスタンスに読み込ませる方針とする。
import com.typesafe.config.ConfigFactory import slick.jdbc.H2Profile.api._ import scala.collection.JavaConverters._ import scala.concurrent.ExecutionContext.Implicits.global import scala.concurrent.duration._ import scala.concurrent.{Await, Future} val hikariConf = ConfigFactory.parseMap( Map("h2" -> Map( "url" -> ("jdbc:h2:" + databasePath), "driver" -> "org.h2.Driver", "connectionPool" -> "HikariCP", "numThreads" -> 5, "poolSize" -> 20, "queueSize" -> -1, "keepAliveConnection" -> true ).asJava ).asJava ) val db :Database = Database.forConfig("h2", config = hikariConf) // 以降でCRUD処理記述
諸注意
基本的には詳しい説明を書かないが、typesefeConfigを使用する場合は、javaのコレクションのに変換するために、.asJava()
メソッドを使用していることに注意したい。
これはimport scala.collection.JavaConverters._
によってimportしているメソッドである。
ここらへんの話は以下を参考にされたい。
最後に
以上で基本的な使用に関する設定は完了となる。 またSlickの使用方法なども資料が古くなっていたので別途自分でまとめ直したい。