update - Soporte para migraciones de esquema con JPA?
database versioning (3)
La respuesta corta es no .
Si cambias tus beans, tendrás que migrar el esquema existente a mano. Por lo tanto, para migraciones de bases de datos de estilo de Rails, tendrá que buscar en otro lugar.
Sin embargo, puede generar fácilmente el ddl inicial de sus beans Java. El siguiente ejemplo ilustra la creación de esquemas con EclipseLink versión 2.0:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="JPATestPU" transaction-type="RESOURCE_LOCAL">
<provider>
org.eclipse.persistence.jpa.PersistenceProvider
</provider>
<class>org.randompage.MyEntity</class>
<properties>
<property name="javax.persistence.jdbc.user" value="johndoe"/>
<property name="javax.persistence.jdbc.password" value="secret"/>
<property name="javax.persistence.jdbc.driver" value="org.h2.Driver"/>
<property name="javax.persistence.jdbc.url" value="jdbc:h2:~/.h2/testdb;FILE_LOCK=NO"/>
<property name="eclipselink.ddl-generation" value="drop-and-create-tables"/>
<property name="eclipselink.logging.level" value="INFO"/>
</properties>
</persistence-unit>
</persistence>
El elemento clave aquí es
<property name="eclipselink.ddl-generation" value="drop-and-create-tables"/>
Esto le dice a EclipseLink que elimine tablas existentes y genere nuevas una vez desde su mapeo JPA. Este procedimiento es altamente específico del vendedor, por lo que para otros proveedores de JPA (Hibernate, OpenJPA ...) deberá consultar su documentación específica.
He estado mirando brevemente JPA recientemente, y me preguntaba cuál es el problema con las migraciones de esquemas de bases de datos y estar alineado con las clases que ha creado.
¿Hay soporte en JPA para esto? Utilidades? ¿Mejores prácticas?
¡Aclamaciones!
No confiaré en los proveedores de JPA para actualizar el esquema de la base de datos. Compruebe Liquibase para uno de los buenos enfoques.
Si configura el generateDdl
para Hibernar (si es la implementación subyacente), genera el esquema de la base de datos de acuerdo con su dialecto actual. Entonces, después de cambiar el dialecto, generará automáticamente la base de datos.
Otros proveedores de JPA pueden tener diferentes propiedades para esto.