• Stars
    star
    322
  • Rank 130,398 (Top 3 %)
  • Language
    Scala
  • License
    MIT License
  • Created over 12 years ago
  • Updated almost 4 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

ActiveRecord-like ORM library for Scala

Scala ActiveRecord maven central javadoc

scala-activerecord is an ORM library for Scala.

This library is inspired by ActiveRecord of Ruby on Rails. It is designed following the CoC(Convention over Configuration), DRY(Don't Repeat Yourself) principles.

Minimal example

Model implementation:

package models

import com.github.aselab.activerecord._
import com.github.aselab.activerecord.dsl._

case class Person(name: String, age: Int) extends ActiveRecord

object Person extends ActiveRecordCompanion[Person]

Schema definition:

package models

import com.github.aselab.activerecord._
import com.github.aselab.activerecord.dsl._

object Tables extends ActiveRecordTables {
  val people = table[Person]
}

ActiveRecord model usage:

import com.github.aselab.activerecord.dsl._
import models._
import scala.language.postfixOps

object App extends App {
  Tables.initialize
  
  Person("person1", 25).save()
  Person("person2", 18).save()
  Person("person3", 40).save()
  Person("person4", 18).save()

  Person.findBy("name", "person1") //=> Some(Person("person1", 25))
  Person.findBy("age", 55) //=> None
  Person.findAllBy("age", 18).toList //=> List(Person("person2", 18), Person("person4", 18))
  Person.where(_.age.~ >= 20).orderBy(_.age desc).toList //=> List(Person("person3", 40), Person("person1", 25))
  
  Tables.cleanup
}

Schema and query DSL is based on Squeryl.

Features

  • Auto connection management
  • Composable query operation
  • Callback
  • Validation
  • Association

Documents and other resources

Web framework support

License

MIT