Busco mejores prácticas en materia de modelos y formas de persistencia de objetos en la base de datos con el juego 2.0. Estudié el juego y las muestras de tipo seguro para jugar 2.0 usando Scala.2.0 modelos de mejores prácticas
Lo que entiendo es:
- El modelo se define en una clase de caso
- Todo el inserto/actualizar/borrar/select se definen en el objeto acompañante de esta clase caso
Así que si tengo que actualizar mi objeto de coches para definir un nuevo propietario voy a tener que hacer:
val updatedCar = myCar.copy(owner=newOwner)
Car.update(updatedCar)
// or
Car.updateOwner(myCar.id.get, newOwner)
Me pregunto por qué la actualización o eliminar declaraciones no están en la misma clase de caso:
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)
}
}
Si lo hace, permitiría hacer:
val updatedCar = myCar.updateOwner(newOwner)
Que es lo que solía hacer con Play 1. X usando Java y JPA. Quizás la razón sea obvia y debido a mi pequeño conocimiento de Scala.