Slick 1.0.0 documentation - 01 導入 Permalink to Introduction — Slick 1.0.0 documentation
SlickはTypesafe社によって開発が行われている,Scalaのためのモダンなデータベースラッパーである.データベースにアクセスしながらScalaのコレクションを扱うかのようにデータを操作する事が出来る.また,SQLを直接書く事も可能である.
val limit = 10.0
// クエリはこのように書く事が出来る
( for( c <- Coffees; if c.price < limit ) yield c.name ).list
// SQLを直接書いた例
sql"select name from coffees where price < $limit".as[String].list
クエリをSQLを用いて書く代わりにScalaを用いるとコンパイル時に合成が安全に行われ,より良い形で利用する事が出来る.Slickは独自のクエリコンパイラを用いてDBに対しクエリを発行する.
Slickは以下のような特徴を持っている:
SlickはScala2.10を必要とします. (Scala2.9を利用する際にはSlickの前身である,ScalaQueryを利用してください.)
他のSQLデータベースもSlickなら簡単にアクセスする事が出来るでしょう.独自のSQLベースのバックエンドを持つデータベースも,プラグインを作成する事でSlickを利用することが出来ます.そのようなプラグインの作成は大きな貢献となるでしょう. NoSQLのような他のバックエンドを持つようなデータベースに関しては現在開発中であるため,まだ利用する事はできません..
SlickのLiftedEmbeddingによるデータベースへのアクセスは以下のステップで行う事ができます.
1.Slickのjarファイルをプロジェクトのdependenciesへ追加する
2.利用するDBに応じたDriverをimportし,セッションを作成する(もしくは単純にthreadLocalSessionをimportする).
import scala.slick.driver.H2Driver.simple._
import Database.threadLocalSession
3.データベーススキーマを記述する
object Coffees extends Table[(String, Double)]("COFFEES") {
def name = column[String]("COF_NAME", O.PrimaryKey)
def price = column[Double]("PRICE")
def * = name ~ price
}
4.セッションスコープ内にて,for式かmap/flatMapを用いてクエリを記述する
Database.forURL("jdbc:h2:mem:test1", driver = "org.h2.Driver") withSession {
( for( c <- Coffees; if c.price < 10.0 ) yield c.name ).list
// or
Coffees.filter(_.price < 10.0).map(_.name).list
}
次の章では,より詳細な扱い方や機能について説明します.
Slick is released under a BSD-Style free and open source software license.