Używam JDO do przechowywania danych w projekcie 2.1 Scala Play. Najlepiej byłoby, gdyby każde zlecenie zawierało swoją własną transakcję, zobowiązując się do jej zakończenia i wycofując, jeśli coś pójdzie nie tak.Jaki jest tradycyjny sposób obsługi transakcji w Play 2 Scala?
Najlepszym sposobem, w jaki mogę to zrobić, jest Kompozycja akcji, w której mogę utworzyć własny obiekt podobny do Action
, który rozpoczyna transakcję, opakowuje blok kodu w Action
, ocenia go i zapisuje wynik, zatwierdza lub wycofuje transakcję, a następnie zwraca wynik.
Jedyne, co mnie niepokoi, to to, że mój cały projekt składa się obecnie z DbAction
s zamiast standardowych Action
s. Nie jestem pewien, dlaczego tak mnie to obchodzi, z wyjątkiem tego, że uważam, że musi być lepsze miejsce na to. Jednak gdy sprawdzę haki dostępne w GlobalSettings
, nic nie wygląda tak, jakby działało.
Czy powinienem po prostu zadzwonić pod numer DbAction
i przestać się zastanawiać, czy istnieje miejsce, w którym można to zachowanie zawiesić, abym mógł po prostu użyć Action
?
Todd
Chciałabym sprawdzić oba te odpowiedzi, ponieważ oba wydają się jak sposób na radzenie sobie z problem. Chciałbym, aby inne osoby, które miały więcej doświadczenia, przedstawiały swoje opinie. Sądzę, że zaletą Action Composition jest to, że mogę kontynuować dostarczanie pewnych standardowych bitów danych, do których wielu kontrolerów będzie potrzebować dostępu. Zaletą korzystania z filtra (którego wcześniej nie widziałem) jest to, że wszystko dzieje się za kulisami, a Ty zajmujesz się czymkolwiek jawnie. – TOB