Learning about Slick
Let's explore the behavior of the Slick framework through code examples to see how we can enhance and replace more traditional ORM solutions.
The first example we can study is part of the test-patterns-scala activator template project that we have analyzed in Chapter 4, Testing Tools. The scalatest/Test012.scala file found inside the project exhibits a typical usage of Slick as follows:
package scalatest
import org.scalatest._
import scala.slick.driver.H2Driver.simple._
import Database.threadLocalSession
object Contacts extends Table[(Long, String)]("CONTACTS") {
def id = column[Long]("CONTACT_ID", O.PrimaryKey)
def name = column[String]("CONTACT_NAME")
def gender = column[String]("GENDER")
def * = id ~ name
}
class Test12 extends FunSuite {
val dbUrl = "jdbc:h2:mem:contacts"
val dbDriver = "org.h2.Driver"
test("Slick, H2, embedded") {
Database.forURL(dbUrl, driver = dbDriver) withSession {
Contacts.ddl.create
Contacts.insertAll(
...