He usado SchemaUpdate de Hibernate para realizar la misma función que las migraciones. En realidad, es más fácil que las migraciones porque cada vez que inicias tu aplicación, examina la estructura de la base de datos y la sincroniza con tus mapeos para que no haya más rake: db: migrate step y tu aplicación nunca puede estar desincronizada con la base de datos que está ejecutando en contra. Los archivos de mapeo de Hibernate no son más complejos que las migraciones de Rails, por lo que incluso si no usó Hibernate en la aplicación, podría aprovecharlo. La desventaja es que no es tan flexible en cuanto a retroceder, migrar hacia abajo, ejecutar declaraciones DML. Como se señaló en los comentarios, tampoco suelta tablas o columnas. Ejecuto un método separado para hacerlo manualmente como parte del proceso de inicialización de Hibernate.
Sin embargo, no veo por qué no puede usar las migraciones de Rails; siempre que no le importe instalar la pila (Ruby, Rake, Rails), no tendrá que tocar su aplicación.
Para una comparación de características entre
echa un vistazo a http://flywaydb.org
Este debería ser un buen comienzo para que usted y cualquier otra persona seleccione la herramienta adecuada para el trabajo.
fuente
Liquibase es otro proyecto en este dominio que vale la pena revisar.
fuente
Grails tiene una utilidad dbmigrate que sigue el modelo de Rails. Dado que está implementado en Groovy, debería poder usarlo desde cualquiera de sus proyectos Java.
fuente
Me encontré con esta publicación mientras investigaba la misma pregunta. Todavía no he llegado a ninguna conclusión sobre la mejor herramienta o enfoque, pero una herramienta con la que me he encontrado y que no se ha mencionado en otras respuestas hasta ahora es dbdeploy . Me interesaría leer las comparaciones de estas herramientas.
Algunos otros recursos relevantes: la publicación algo envejecida de Martin Fowler y Pramod Sadalage sobre el diseño de bases de datos evolutivas , y el libro Refactoring Databases: Evolutionary Database Design de Sadalage y Scot Ambler.
fuente
También hay dos implementaciones independientes de migraciones similares a rieles para Java:
1) Migraciones basadas en Maven de Carbon Five
2) Tareas basadas en hormigas de Hashrocket (mi favorito personal)
Aunque estos paquetes se escribieron específicamente para Maven y Ant, con un poco de trabajo puede adaptarlos a casi cualquier cosa.
fuente
Migrate4j parece un candidato, pero el proyecto no parece lo suficientemente maduro para su uso en producción.
fuente
También está DbMaintain, que se desarrolló inicialmente dentro de Unitils, pero ahora es un proyecto dedicado. Actualmente lo estamos usando y estamos muy satisfechos (lo que no significa que no haya buenas alternativas). Enumero más de ellos en mi base de datos + marcadores de migración (con un enfoque en las herramientas que admiten Maven).
fuente