java - tutorial - Sin usar hibernate.hbm2ddl.auto, ¿cómo exporto todo el esquema inicial a Flyway?
flyway spring boot (4)
Estoy en la etapa casi lista de mi desarrollo de JEE. Con muchas recomendaciones de NO utilizar Hbm2ddl.auto de Hibernate en producción, decidí eliminarlo.
Entonces, descubrí Flyway, que parece genial para futuros cambios y migraciones de bases de datos, pero estoy atascado en el primer paso: tengo muchas entidades, algunas entidades heredan de entidades base. Esto hace que la declaración CREATE sea muy compleja.
¿Cuál es la mejor práctica para crear el primer archivo de migración?
¡Gracias!
No estoy seguro acerca de Flyway pero hay una manera alternativa, puede usar tareas ant para hibernar para generar o actualizar el esquema.
Espero eso ayude.
Para el primer archivo de migración, solo necesita el ddl actual de su base de datos. Hay muchas herramientas que pueden obtener esto para usted (como la opción "copiar ddl" en la herramienta IntelliJ IDEA Database o un cliente GUI de su proveedor de bases de datos).
Si construyes tu proyecto con Maven, puedes usar el plugin Hibernate maven .
Si ha adoptado un enfoque de "entidades primero" durante el desarrollo, deberá generar el esquema inicial de la misma manera para la primera implementación en vivo: esto generará el primer script de creación utilizado por Flyway y también puede ser necesario que haya un segundo script asociado para rellenar datos de referencia.
En pocas palabras, las razones por las que ya no se puede usar hbm2ddl.auto
después de la primera implementación son que create
destruirá los datos existentes y la update
no es lo suficientemente confiable como para cubrir todos los tipos de cambios de esquema (ya que parece que ya sabes de esta pregunta SO ).
Flyway es una herramienta muy útil, pero requiere un nivel de disciplina que puede no haber existido durante el desarrollo. Al avanzar desde el lanzamiento inicial, se deben producir scripts de actualización de base de datos para Flyway que sean equivalentes a los cambios realizados en las entidades desde la última versión. Existen herramientas (por ejemplo, varios productos comerciales de Redgate ) que pueden ayudar aquí: intentan "diferir" dos esquemas y generar esquemas y / o secuencias de actualización de datos para obtener de la base de datos A a la base de datos B. Pero según mi experiencia, ninguno de ellos son perfectos y no alcanzan el santo grial de permitir un enfoque completamente automatizado.
Podría decirse que la mejor manera es un acercamiento manual "sobre la marcha" para garantizar que los scripts de actualización no destructivos se comprometan con el control fuente cada vez que se realice un cambio de entidad que afecte el esquema o los datos de referencia, pero como ya se mencionó, esto requerirá disciplina y / o procesos documentados para que sigan todos los miembros del equipo.