Datenbanktransaktionen in Play Framework Scala-Anwendungen (Anorm)
Ich entwickle eine Anwendung mit Play Framework und Scala. Ich benutze anorm für Datenzugriffsebene. Und ich habe ein Problem, das ich nicht lösen konnte.
Kurz: Ich möchte in der Lage sein, Methoden in Datenzugriffsobjekten (dao) zu haben, um innerhalb von Transaktionen zu arbeiten und auch alleine aufgerufen zu werden.
Einzelheiten:
Ich habe Datenzugriffsebene aus Klasse mit Methoden, die nur bestimmte SQL über Datenbank ausführt. Sie sehen traditionell so aus:
def list() = DB.withConnection { implicit cn =>
...
}
Jetzt möchte ich einige Methoden in einem Transaktionsbereich ausführen lassen. Wie herkömmliche Select-Update-Dienstmethoden, können diese jedoch weiterhin alleine ausgeführt werden. Also, was ich in meinem Kopf habe, ist wie folgt:
class Service {
def fooTransacted() = {
inTransaction {
val old = dao.select(id = 2)
val newObj = old.copy(isActive = true)
dao.update(newObj)
}
}
def fooSinle() = {
dao.select(id = 2)
}
}
Ich habe verschiedene Möglichkeiten ausprobiert, konnte aber keine Lösung finden.