Pregunta Generar esquema en dropwizard-hibernate


Seguí el tutorial para dropwizard e hibernate sin problemas. Ahora tengo anotaciones no triviales en mis entidades, y me gustaría que hibernate genere las tablas para mí, y cosas así.Entonces, ¿cómo puedo cambiar la configuración de hibernación? ¿Puedo darle un hibernate.cfg.xml? Si puedo, ¿tengo que volver a configurar la conexión?

encontré esto PR, pero aún no parece estar en el lanzamiento público (no hibernateBundle.configure en mis jarras)

Pero tal vez estoy buscando algo equivocado. Hasta ahora, solo estoy tratando de establecer hibernate.hbm2dll.auto. Después de todo, podría haber otra forma de habilitar la generación de tablas de hibernación en Dropwizard... Entonces, ¿alguna ayuda?

Gracias.


Editar: Abordé el problema desde otro ángulo, para crear explícitamente el esquema en lugar de usar hbm2ddl.auto. Ver respuesta propuesta.


11
2018-06-09 23:21


origen


Respuestas:


Editar: ¡problema resuelto! Al hacer esto en la configuración de YAML, actualmente funciona: (Dropwizard 0.7.1)

database:
    properties:
        hibernate.dialect: org.hibernate.dialect.MySQLDialect
        hibernate.hbm2ddl.auto: create

(de esta respuesta)


Respuesta anterior:

Esto es lo que estoy usando actualmente: una clase que llama a SchemaExport de hibernate para exportar el esquema a un archivo SQL o para modificar la base de datos. Simplemente lo ejecuto después de cambiar mis entidades y antes de ejecutar la aplicación.

public class HibernateSchemaGenerator {

    public static void main(String[] args) {
        Configuration config = new Configuration();

        Properties properties = new Properties();

        properties.put("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");
        properties.put("hibernate.connection.url", "jdbc:mysql://localhost:3306/db"); 
        properties.put("hibernate.connection.username", "user");
        properties.put("hibernate.connection.password", "password");
        properties.put("hibernate.connection.driver_class", "com.mysql.jdbc.Driver");
        properties.put("hibernate.show_sql", "true");
        config.setProperties(properties);

        config.addAnnotatedClass(MyClass.class);

        SchemaExport schemaExport = new SchemaExport(config);

        schemaExport.setOutputFile("schema.sql");
        schemaExport.create(true, true);

    }

}

No sabía sobre herramientas de hibernación antes. Por lo tanto, este ejemplo de código se puede usar en la inicialización del servicio para actuar como hbm2ddl.auto = create.

Actualmente lo estoy usando simplemente ejecutando la clase (desde eclipse o maven) para generar y revisar el resultado SQL.


24
2018-06-18 21:42