query - Buenas prácticas de Grails GORM
grails documentation (2)
¿Alguien sabe si existe una guía definitiva de mejores prácticas para GORM? Encuentro información dispersa en diferentes blogs y diferentes recursos, pero no puedo encontrar una guía definitiva. Encuentro cosas que dicen que no se debe hacer cosas relacionadas con la base de datos en los controladores y mantener esas cosas en la capa de servicio, por ejemplo. Sin embargo, sería bueno ver cuál es el enfoque sugerido para escribir una aplicación web simple. ¿Deberíamos usar siempre objetos de comando en los controladores y pasar esos objetos de comando a los servicios? ¿Deberíamos almacenar esos objetos de comando en sesión en lugar de almacenar objetos de dominio reales en sesión, lo que parece causar muchas excepciones de inicio perezosas, etc.?
Intenté reconstruir la información que encontré, pero si alguien sabe de un recurso integral, sería genial.
El libro Grails in Action habla mucho sobre las mejores prácticas en Grails. En el momento de escribir estas líneas, no se publicó en su forma final, pero puede comprar y leer la vista previa.
Recientemente estuve buscando las mismas respuestas que me estás preguntando y ese libro me ha ayudado mucho.
Hay mucha información excelente disponible de la serie GORM Gotchas. Está en tres partes.
Para responder a sus preguntas específicas sobre los servicios y los objetos de comando.
P: "¿Deberíamos usar siempre objetos de comando y Servicios?"
R: Algunos podrían argumentar que es excesivo hacerlo, sin embargo personalmente creo que es un gran patrón y hace que las cosas sean mucho más fáciles de probar y extender. Puede parecer mucho esfuerzo, pero vale la pena en proyectos grandes.
P: "¿Deberíamos almacenar objetos de comando en sesión en lugar de objetos de dominio?"
R: Almacene lo menos posible en la sesión (si es que lo hace). Si tiene que almacenar algo allí, es mejor que sea pequeño y liviano. Los objetos de comando (típicamente) serán mejores para esto que una clase de dominio.
Actualización (19/11/2014)
Me gustaría destacar una serie muy buena que describe muchos de los posibles problemas que enfrentan el uso de GORM e Hibernate. Es muy largo, pero vale la pena leerlo si planea usar GORM / Hibernate en un proyecto de múltiples usuarios a gran escala. No se dé vuelta por el enfoque negativo porque contiene mucha información útil.
No me gusta Hibernate (y Grails), PARTE 1
No me gusta Hibernate / Grails, parte 2, problema de buscador repetible: ¡no confíes en nada!
No me gusta la parte 3 de Grails / Hibernate. DuplicateKeyException: Catch it if you can.
No me gusta Grails / Hibernate, parte 4. Objetos proxy de Hibernate.
No me gusta la parte 5 de Hibernate / Grails: auto-saving y auto-flushing
No me gusta Hibernate / Grails parte 6, cómo guardar objetos usando refresh ()
No me gusta la parte 7 de Hibernate / Grails: trabajar en proyectos más complejos
No me gusta Hibernate / Grails, parte 8, pero algunos como Hibernate y Grails. ¿Por qué?
No me gusta Hibernate / Grails parte 9: código testable
No me gusta Hibernate / Grails, parte 10: Buscador repetible, lecciones aprendidas
No me gusta Hibernate / Grails, parte 11. Pensamientos finales.