2012-08-27 10 views
5

Miré el código fuente Controller.groovy, y parece que las operaciones CRUD no son transaccionales (al menos explícitamente).¿El andamio de Grails es transaccional de alguna manera?

Si estoy en lo cierto, ¿significa que los andamios dinámicos no se deben usar en producción como lo están? ¿Hay alguna forma de hacerlo transaccional (es decir, ¿puedo modificar Controller.groovy o lo que sea?)?

Respuesta

3

Tiene razón, el andamio no es transaccional. Esto podría deberse a que las fuentes de datos de soporte de Grails e Hibernate no admiten transacciones, como el motor MyISAM de MySQL.

Puede cambiarlo a ser transaccional de la siguiente manera:

  1. plazo grails install-templates
  2. edición src/templates/scaffolding/Controller.groovy

Griales utilizarán esta plantilla para generate-controller o cada vez que se genera dinámicamente un controlador de andamios.

+1

Si bien esto es técnicamente correcto, hacer las transacciones en un Controlador no es realmente una mejor práctica. Todo el trabajo transaccional debe hacerse en un Servicio. Use andamios ligeramente. No ponga código de andamio en producción. – Gregg

+1

No estoy de acuerdo en que exista algo intrínsecamente malo o que no esté listo para la producción sobre andamios. Al usar el andamio (no estoy asumiendo el out-of-the-box, sino que se han hecho algunas modificaciones). El andamiaje le brinda una gran ganancia de mantenimiento y, en todo caso, le obliga a mantener sus controladores delgados. – cdeszaq

+0

Las transacciones en la capa de servicio es una práctica recomendada, pero no movería las operaciones CRUD a un servicio únicamente por transaccionalidad. Además, el andamiaje es una forma poderosa de proporcionar una interfaz CRUD simple, por ej. administración con un mínimo de código y esfuerzo, y es apropiado para una amplia gama de aplicaciones. – ataylor

Cuestiones relacionadas