2008-09-15 18 views
5

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?¿Cómo actualizar el esquema de la base de datos creado con una herramienta ORM?

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 ocuparme de las consultas SQL de bajo nivel, en lugar de solo definir las asignaciones y permitir que las herramientas ORM hagan todo el trabajo ...

Así que 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.

Respuesta

7

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.

0

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 implicó código específico de la base de datos! ¡Uno de los principales problemas con Hibernate!

0

Al trabajar con Hibernate, utilizo una clase de instalador que se ejecuta desde la línea de comandos y tiene opciones para crear el esquema de base de datos, insertar datos básicos y actualizar dinámicamente el esquema de 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.

2

No veo por qué los esquemas generados por ORM son diferentes a otros esquemas DB; el problema es el mismo. Asumiendo que su ORM escupirá una secuencia de comandos de generación, puede usar una herramienta externa para hacer la diferencia

No lo he intentado pero google volvió con SQLCompare como una opción - Estoy seguro de que hay otros.

2

Ponemos a mano los scripts de actualización de código de SQL y desmontamos 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á.

1

Puede consultar este feature comparison de algunas herramientas de actualización de esquema de base de datos.

una comparación del número de preguntas en la siembra de algunas de esas herramientas:

Cuestiones relacionadas