Now it’s official – even if version numbers are still preceded by a “zero” major release:
SLICK has been publicly announced by
Typesafe:
SLICK stands for Scala Language-Integrated Connection Kit, which is more or less the Scala equivalent for
LINQ-to-SQL. Note that I say LINQ-to-SQL, not LINQ in general, as Scala already has sufficient means of querying collections using the Scala language itself.
Here’s a sample of what SLICK code will look like (taken from the SLICK website):
object Coffees extends Table[(String, Int, Double)]("COFFEES") {
def name = column[String]("COF_NAME", O.PrimaryKey)
def supID = column[Int]("SUP_ID")
def price = column[Double]("PRICE")
def * = name ~ supID ~ price
}
Coffees.insertAll(
("Colombian", 101, 7.99),
("Colombian_Decaf", 101, 8.99),
("French_Roast_Decaf", 49, 9.99)
)
val q = for {
c <- Coffees if c.supID === 101
// ^ comparing Rep[Int] to Rep[Int]!
} yield (c.name, c.price)
println(q.selectStatement)
q.foreach { case (n, p) => println(n + ": " + p) }
As you can see, SLICK neatly integrates with Scala’s own syntax. As with LINQ-to-SQL, SLICK’s goal is to
“write your database queries in Scala instead of SQL”
This is quite orthogonal to what
jOOQ is aiming for:
“SQL was never meant to be anything other than… SQL!”
As a reminder, see my previous
blog post about how jOOQ integrates with Scala, and how you can write almost-SQL queries in Scala using jOOQ against 13 popular databases. It would be interesting to compare the two approaches side-by-side in an independent evaluation, to see the pro’s and con’s of each one, in terms of
- Developer productivity
- Maintainability
- Performance
- Feature scope
- etc.
I think it’s time someone made that evaluation. An example can be seen here:
https://stackoverflow.com/questions/10537766/closest-equivalent-to-sqlalchemy-for-java-scalaLike this:
Like Loading...
Published by lukaseder
I made jOOQ
View all posts by lukaseder