relacional para objeto mapeo datos con java database orm migration

para - orm java



¿Cómo actualizar el esquema de base de datos creado con una herramienta ORM? (8)

Estoy buscando una solución general para actualizar el esquema de la base de datos con herramientas ORM, como JPOX o Hibernate. ¿Cómo lo haces en tus proyectos?

La primera solución que me viene a la mente es crear mi propio mecanismo para actualizar bases de datos, con scripts SQL haciendo todo el trabajo. Pero en este caso tendré que recordar sobre la creación de nuevas secuencias de comandos cada vez que se actualicen las asignaciones de objetos. Y aún tendré que lidiar con consultas SQL de bajo nivel, en lugar de simplemente definir mapeos y permitir que las herramientas ORM hagan todo el trabajo ...

Entonces la pregunta es cómo hacerlo correctamente. Quizás algunas herramientas permitan simplificar esta tarea (por ejemplo, escuché que Rails tiene dicho mecanismo incorporado), de ser así, ayúdenme a decidir qué herramienta ORM elegir para mi próximo proyecto Java.



No veo por qué los esquemas generados por ORM son diferentes a otros esquemas DB, el problema es el mismo. Suponiendo que su ORM escupirá un script de generación, puede usar una herramienta externa para hacer el diff

No lo he intentado, pero Google volvió con SQLCompare como una opción, estoy seguro de que hay otros.


Terminamos haciendo scripts de actualización cada vez que cambiamos la base de datos. Entonces, hay un script de la versión 10 a la 11, del 11 al 12, etc. Luego, podemos ejecutar cualquier conjunto de scripts consecutivos para saltar de una versión existente a la nueva. Almacenamos la versión existente en la base de datos para que pudiéramos detectar esto al inicio.

Sí, esto implicaba un código específico de la base de datos. ¡Uno de los principales problemas con Hibernate!


LiquiBase es una interesante biblioteca de código abierto para el manejo de refactorizaciones de bases de datos (actualizaciones). No lo he usado, pero definitivamente lo intentaré en mi próximo proyecto, en el que necesito actualizar un esquema db.


Cuando trabajo con Hibernate, utilizo una clase de instalador que se ejecuta desde la línea de comandos y tengo opciones para crear un esquema de base de datos, insertar datos básicos y actualizar dinámicamente el esquema de la base de datos usando SchemaUpdate . Me parece extremadamente útil. También me da un lugar para colocar scripts únicos que se ejecutarán cuando se inicie una nueva versión para, por ejemplo, rellenar un nuevo campo en una tabla DB existente.


Le damos código a los scripts de actualización de SQL y derribamos el esquema y lo reconstruimos aplicando los scripts de actualización como parte de nuestro proceso de construcción continua. Si alguna de las asignaciones de hibernación no coincide con el esquema, la compilación fallará.



Puede consultar esta comparación de características de algunas herramientas de actualización de esquema de base de datos.

Una comparación del número de preguntas en SOW de algunas de esas herramientas: