guide - hibernate getting started
¿Cómo administrar revisiones de objetos en Grails? (3)
Necesito implementar un sistema de revisión para artículos en mi aplicación web Grails. Después de buscar en el foro de griales, stackoverflow, grills plugins y buscar en Google, he terminado con 3 opciones:
Opción 1 - Usar el complemento Grails Envers (ver http://code.google.com/p/grails-envers-plugin/ ). ¿Alguien lo ha usado con éxito? O usando Envers sin el complemento (ver aquí ), pero ¿cómo puedo hacer que funcione con GORM?
Opción 2 - Utilizando el plugin Gvers que he encontrado aquí: https://github.com/ziftytodd/gvers . Nunca escuché a nadie usándolo, ¿hay alguien que lo haya usado con éxito?
Opción 3 - Mecanismo incorporado . Weceem ha creado un sistema de control de versiones para cualquier contenido del Weceem CMS. Puedo inspirarme en la lógica del código y diseño de esta gran aplicación, pero parece exagerado y realmente no me gusta usar soluciones no estándar.
Entonces mi pregunta, ¿qué me aconsejas que haga? ¿Alguna vez ha usado alguna de estas opciones?
Muchas gracias por sus ideas.
Como no obtuve ninguna respuesta durante los días posteriores a mi pregunta, hemos comenzado a investigar todas las opciones y llegamos a los siguientes resultados / conclusiones:
Complemento de Envers : mientras que Envers es una forma bien establecida de manejar las revisiones de objetos y la auditoría con Hibernate (como lo señala Vadeg), no existe una solución de este tipo para griales. El plugin de Envers es extremadamente inútil y un proyecto muerto y nunca nacido. Por lo tanto, usar Envers con GORM todavía no es posible directamente PERO creo que hay un espacio para un Envers Plugin (¿tal vez parte de Grail 2.0?) Ya que Envers ahora es parte integral de los módulos centrales de Hibernate. Sin embargo, no tuvimos tiempo para implementar una solución de este tipo (que es, con mucho, la mejor cuando tiene suficiente tiempo y recursos por delante) ... así que la descartamos.
Plugin de Gvers : Sorprendentemente, este plugin funciona como un amuleto, incluso si parece que nadie lo está utilizando en el mundo GRAILS (¡incluso el creador de plugins que tiene un correo electrónico no válido!). Parece arriesgado ir con él, pero si sus requisitos son bajos (como un sistema de control de versiones básico), debe ir con él ...
Sistema incorporado : excepto si está construyendo un sistema CMS con necesidades muy específicas O, por el contrario, algo muy simple, no lo usaría en ningún otro caso. Weceem está muy bien implementado con muchos ejemplos para las revisiones de contenido de CMS, pero incluso para esto, es una pena que no usen Envers. No hay necesidad de reinventar la rueda ... mejor para mejorar Ferrari existente, ¿no?
Sistema VCS : un amigo me ha sugerido que use las soluciones existentes que están diseñadas especialmente para este tipo de tareas: Control de versiones ¡Sistema, por supuesto! En realidad, GIT parece ser el candidato perfecto: repositorios rápidos, confiables y libres de almerst disponibles a su disposición. En realidad, esta es la solución perfecta. Mi único problema: bueno, no sé cómo usar Git (y menos aún su API) y nuevamente no tengo tiempo.
Línea de fondo
Ciertamente usaré Gvers pero si estás familiarizado con Git o si te sientes cómodo con GORM e Hibernate , crea un plugin de grial (basado en Git o Envers )
He usado Envers en el proyecto con Hibernate y funciona bien. GORM está basado en Hibernate, así que creo que no hay ningún problema con él.
Antes que nada, ¿necesita decidir qué tipo de control de versiones necesita? ¿Necesita deshacer los cambios en el gráfico de objetos o debe cuidar algunos campos? A veces es mejor hacer una pequeña implementación local en lugar de inyectar una gran biblioteca.
Si necesita un gráfico de revisión de objetos, Envers es una buena opción. Si necesita hacer una revisión de un campo, bricolaje :)
El plugin de Lucas Ward funciona. Confirmado con Grails 1.3.7 Lo importante es garantizar que las actualizaciones de las entidades se realicen dentro de las transacciones, ya que Devers depende de ellas. Solo para recordarle a Grails, los controladores no son transaccionales por defecto.