Aprendí a jugar siguiendo el tutorial en su sitio web para construir un pequeño motor de blogs.¿Cómo manejo las evoluciones de la base de datos cuando estoy usando JPA?
Utiliza JPA y en su bootstrap llama a Fixtures.Deletemodels(), (o algo por el estilo).
Básicamente nukes todas las tablas cada vez que se ejecuta y pierdo todos los datos.
Implementé un sistema de producción como (sin la instrucción nuke).
Ahora tengo que implementar una gran actualización para el sistema de producción. Muchas clases han cambiado, se han agregado y se han eliminado. En mis pruebas locales, sin anular las tablas en cada ejecución, encontré problemas de sincronización. Cuando intentaba escribir o leer desde tablas el juego arrojaba errores. Abrí mysql y, efectivamente, las tablas solo se habían modificado parcialmente y se habían modificado incorrectamente en algunos casos. Incluso si tengo el modo DDL configurado para "crear" en mi configuración, JPA parece no poder "resolver" cómo conciliar los cambios y modificar mi esquema en consecuencia.
Así que tengo que poner de nuevo en la declaración de arranque que nukes todas mis tablas.
Así que comencé a investigar las evoluciones de la base de datos dentro de Play y leí un artículo en el sitio web de play framework sobre las evoluciones de la base de datos. El artículo hablaba sobre scripts de versiones, pero decía: "Si trabajas con JPA, Hibernate puede manejar las evoluciones de la base de datos automáticamente. Las evoluciones son útiles si no usas JPA".
Entonces, si se supone que JPA se está ocupando de esto por mí, ¿cómo implemento grandes actualizaciones en una gran aplicación Play? Hasta ahora, JPA no ha podido hacer que el esquema cambie correctamente y la aplicación generará errores. No estoy interesado en perder todos mis datos, por lo que la corrección del dev "Fixtures.deleteModels()" no se puede usar realmente en prod.
Gracias de antemano, Josh
Ok, entonces la documentación de juego es simplemente incorrecta. Esto es una decepción ya que realmente dependía de esta característica. –
Entonces, ¿puedo habilitar las secuencias de comandos de evolución mientras sigo usando JPA? Los documentos de juego hacen que parezca que los dos son mutuamente exclusivos. –
¿Qué quiere decir con "habilitar secuencias de comandos de evolución"? –