Лучшие практики для моделей Play 2.0

Я ищу лучшие практики в отношении моделей и способов сохранения объектов в базе данных с помощью play 2.0. Я изучил образцы Play и typesafe для play 2.0, используя scala.

Насколько я понимаю:

  • Модель определена в классе case
  • Все операции вставки/обновления/удаления/выбора определены в сопутствующем объекте этого класса case

Поэтому, если мне нужно обновить мой объект Car для определения нового владельца, который мне нужно будет сделать:

val updatedCar = myCar.copy(owner=newOwner)
Car.update(updatedCar)
// or
Car.updateOwner(myCar.id.get, newOwner)

Мне интересно, почему операторы обновления или удаления не находятся в самом классе case:

case class Car(id: Pk[Long] = NotAssigned, owner: String) {
    def updateOwner(newOwner: String) {
        DB.withConnection { implicit connection =>
            SQL(
                """
                update car
                set owner = {newOwner}
                where id = {id}
                """
            ).on(
                'id -> id,
                'newOwner -> newOwner
            ).executeUpdate()
        }
        copy(owner = newOwner)
    }
}

Это позволит сделать:

val updatedCar = myCar.updateOwner(newOwner)

Что именно Раньше я делал с Play 1.X, используя Java и JPA. Возможно, причина очевидна и связана с моим небольшим знанием Scala.

5
задан kheraud 10 May 2012 в 11:40
поделиться