2012-08-27 17 views
5

Spojrzałem na kod źródłowy Controller.groovy i wygląda na to, że operacje CRUD nie są transakcyjne (przynajmniej jawnie).Czy rusztowanie graal jest w jakikolwiek sposób transakcyjne?

Jeśli mam rację, czy oznacza to, że dynamiczne rusztowanie nie powinno być używane w produkcji tak jak jest? Czy istnieje sposób, aby uczynić go transakcyjnym (tzn. Czy mogę zmodyfikować Controller.groovy lub coś podobnego?)?

Odpowiedz

3

Masz rację, rusztowanie nie jest transakcyjne. Może to być spowodowane tym, że grails i hibernacja obsługują źródła danych, które nie obsługują transakcji, takich jak silnik MyISQL MySQL.

Można go zmienić za transakcyjny następująco:

  1. prowadzony grails install-templates
  2. edit src/templates/scaffolding/Controller.groovy

Grails użyje tego szablonu dla generate-controller lub gdy jest dynamicznie generuje kontroler rusztowania.

+1

Chociaż jest to technicznie poprawne, wykonywanie transakcji w kontrolerze nie jest najlepszą praktyką. Wszystkie transakcje powinny być wykonywane w ramach Usługi. Użyj rusztowania lekko. Nie wkładaj kodu rusztowania do produkcji. – Gregg

+1

Nie zgadzam się z tym, że w przypadku rusztowań istnieje coś złego lub nie jest ono gotowe do produkcji. Korzystając z rusztowania (nie zakładam, że jest gotowe do użycia, ale wprowadzono pewne modyfikacje). Rusztowanie daje ogromną wygraną w utrzymywaniu i, jeśli w ogóle, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ – cdeszaq

+0

Transakcje w warstwie usług to najlepsza praktyka, ale nie przenosiłbym operacji CRUD do usługi wyłącznie dla transakcji. Ponadto, rusztowanie jest skutecznym sposobem zapewnienia prostego interfejsu CRUD dla np. administracja z minimalnym kodem i nakładem pracy i jest odpowiednia dla szerokiej gamy aplikacji. – ataylor