Utilizo Ruby on Rails y Java. Realmente disfruto el uso de migraciones cuando estoy trabajando en un proyecto de rieles. así que me pregunto si hay una herramienta de migraciones para Java. Si no existe tal herramienta, ¿es una buena idea usar migraciones como herramienta para controlar una base de datos utilizada por un proyecto Java?Migraciones para Java
Respuesta
He utilizado Hibernate's SchemaUpdate para realizar la misma función que las migraciones. En realidad es más fácil que 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 un rake adicional: db: migrate step y tu aplicación nunca estará fuera de sincronización 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 usara 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ñala en los comentarios, tampoco se sueltan tablas o columnas. Ejecuto un método diferente para hacer esos manualmente como parte del proceso de inicialización de Hibernate.
No veo por qué no podría usar las migraciones de Rails, siempre y cuando no le importe instalar la pila (Ruby, Rake, Rails), no tendría que tocar su aplicación.
También hay dos implementaciones independientes de las migraciones rieles como para Java:
1) migraciones basadas en Maven desde Carbon Five
2) tareas basadas en la hormiga de Hashrocket (mi favorito personal)
Aunque estos paquetes fueron escritos específicamente para Maven and Ant, con algo de trabajo puedes adaptarlos a casi cualquier cosa.
Hashrocket no se ha modificado desde 2007. El producto c5-db-migration de Carbon Five no se ha actualizado desde 2010. – Green
Liquibase es otro proyecto en este dominio que vale la pena echarle un vistazo.
Migrate4j parece ser un candidato, pero el proyecto no parece lo suficientemente maduro para el uso de producción.
Me encontré con esta publicación mientras investigaba la misma pregunta. No he llegado a ninguna conclusión sobre la mejor herramienta o enfoque hasta el momento, pero una herramienta que he encontrado que no se ha mencionado en otras respuestas hasta el momento es dbdeploy. Me interesaría leer cualquier comparación de estas herramientas.
Algunos otros recursos relevantes: Martin Fowler y la publicación algo envejecida de Pramod Sadalage en Evolutionary Database Design, y el libro Refactoring Databases: Evolutionary Database Design por Sadalage y Scot Ambler.
Para una comparación característica entre
- Flyway
- Liquibase
- c5-db-migración
- dbdeploy
- mybatis
- migratedb
- migrate4j
- dbmaintain
- AutoPatch
echar un vistazo a http://flywaydb.org
Este debe ser un buen comienzo para usted y cualquier otra persona a seleccionar la herramienta adecuada para el trabajo
Oye, no sabía de Flyway. Se ve bastante interesante y voy a echarle un vistazo más de cerca. Gracias por mencionar Flyway! –
@Pascal Thivent ¡Gracias por tu comentario! Si lo evalúa, me gustaría escuchar su opinión/crítica/sugerencias al respecto, ya sea aquí o en el rastreador de problemas de Flyway :-) También buscaré agregar DbMaintain a la matriz de comparación, ya que se ve como un gran competidor ... –
Claro, lo haré. Y gracias por agregar DbMaintain a la comparación, es muy agradable tener una matriz así. –
También hay 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 ninguna buena alternativa). Enumero más de ellos en mis database+migration marcadores (con un enfoque en las herramientas que soportan Maven).
Este tipo de herramientas nos ayudarán a desarrollar de manera más rápida y segura –
@Arthur Sí, es algo muy bueno que tengamos algunas herramientas como esa también. Actualizaciones de esquema en cascada de un entorno a otro ahora es un placer para nosotros :) –
- 1. Migraciones del complemento para Redmine
- 2. Migraciones de carriles para esquemas postgreSQL
- 3. ¿Soporte para migraciones de esquema con JPA?
- 4. MongoMapper y migraciones
- 5. Añadir filas en migraciones
- 6. Yii migraciones db automática
- 7. Administración de migraciones mongoid
- 8. ¿Cómo revertir migraciones utilizando Flyway?
- 9. Generar migraciones fuera de Rails
- 10. Manejo de migraciones con MongoDb
- 11. Mostrar migraciones pendientes en raíles
- 12. Migraciones de base de datos para SQL Server
- 13. Cómo revertir para comenzar y recrear/reconstruir nuevas migraciones
- 14. Convenciones de nomenclatura para las migraciones de Rails
- 15. Rieles migraciones: Deshacer ajuste por defecto para una columna
- 16. ¿Existe una opción para generar andamios sin generar migraciones?
- 17. Ejecutando migraciones hacia el sur para todas las aplicaciones
- 18. Migraciones de bases de datos para Entity Framework 4
- 19. ¿Cómo se relacionan las migraciones OnModelCreating y las migraciones no automáticas?
- 20. Revertir todas las migraciones de carriles o eliminar tablas y modificar migraciones (comenzar desde cero)
- 21. modelos de actualización en los carriles/migraciones
- 22. Migraciones de rieles: Cargar datos predeterminados
- 23. Django 1.3 y migraciones del sur
- 24. Despliegue de Capistrano pero migraciones manualmente
- 25. Migraciones de Data Core con Magical Record
- 26. Ejecutar migraciones desde la consola de rieles
- 27. Forma de "aplanar" ¿Migraciones de carriles?
- 28. Evolución del esquema del servidor SQL (migraciones)
- 29. ¿Migraciones de bases de datos tipo riel?
- 30. C# alternativa de migraciones de carriles
No lo sincroniza al 100%. No altera columnas, elimina columnas o tablas, elimina FK, etc. – cherouvim