2012-08-27 12 views
5

Ho guardato il codice sorgente Controller.groovy e sembra che le operazioni CRUD non siano transazionali (almeno in modo esplicito).Il ponteggio dei graal è in qualche modo transazionale?

Se ho ragione, vuol dire che lo scaffolding dinamico non dovrebbe essere usato in produzione così com'è? C'è un modo per renderlo transazionale (ad esempio, posso modificare Controller.groovy o altro?)?

risposta

3

Si è corretto, l'impalcatura non è transazionale. Ciò potrebbe essere dovuto al fatto che grails e hibernate supportano le origini dati che non supportano le transazioni, come il motore MyISAM di MySQL.

Si può cambiare per essere transazionale come segue:

  1. corsa grails install-templates
  2. modificare src/templates/scaffolding/Controller.groovy

Grails potranno utilizzare questo modello per generate-controller o ogni volta che genera dinamicamente un controller impalcature.

+1

Anche se ciò è tecnicamente corretto, eseguire il lavoro di transazione in un controller non è la procedura migliore. Tutto il lavoro transazionale dovrebbe essere svolto in un servizio. Utilizzare le impalcature leggermente. Non mettere in produzione il codice dello scaffolding. – Gregg

+1

Non sono d'accordo sul fatto che ci sia qualcosa di intrinsecamente cattivo o non pronto per la produzione sulle impalcature. Usando il ponteggio (non sto assumendo l'out-of-the-box, ma piuttosto che alcune modifiche sono state fatte). L'impalcatura ti garantisce un'enorme manutenibilità e, se possibile, ti obbliga a mantenere sottosopra i tuoi controller. – cdeszaq

+0

Le transazioni nel livello di servizio sono una buona pratica, ma non vorrei spostare le operazioni CRUD in un servizio esclusivamente per transazioni. Inoltre, lo scaffolding è un modo potente per fornire una semplice interfaccia CRUD per es. amministrazione con un minimo di codice e impegno, ed è appropriato per una vasta gamma di applicazioni. – ataylor

Problemi correlati