База данных транзакций в приложениях Play Framework scala (анорм)
Я разрабатываю приложение с использованием Play Framework и Scala. Я использую анорм для слоя доступа к данным. И у меня есть проблема, которую я не мог решить.
Коротко: Я хочу иметь возможность иметь методы в объектах доступа к данным (dao) для работы внутри транзакций, а также вызываться в одиночку.
Подробности:
У меня есть слой доступа к данным, состоящий из класса с методами, которые выполняют только определенный SQL над базой данных. Традиционно они выглядят так:
def list() = DB.withConnection { implicit cn =>
...
}
Теперь я хочу иметь несколько методов, которые будут выполняться в области транзакции. Подобно традиционным методам выбора-обновления, но все же можно запускать их в одиночку. Итак, что я имею в виду, так:
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)
}
}
Я пробовал несколько способов, но не мог найти никакого решения.