2013-06-09 13 views
11

Postępowałem zgodnie z samouczkiem dotyczącym Dropwizarda i hibernacji bez problemów. Teraz mam nietrywialne adnotacje w moich jednostkach i chciałbym, aby hibernacja generował tabele dla mnie i takie tam. Jak więc zmienić konfigurację hibernacji? Czy mogę dać mu plik hibernate.cfg.xml? Jeśli mogę, czy muszę ponownie skonfigurować połączenie?Generowanie schematu w usłudze dropwizard-hibernate

Znalazłem PR, ale nie wydaje się być w komunikacie publicznym jeszcze (nie hibernateBundle.configure w moich słoikach)

Ale może Szukam złej rzeczy. Do tej pory próbuję po prostu ustawić zestaw hibernate.hbm2dll.auto. W końcu może istnieć inny sposób, aby włączyć generowanie tabeli hibernacji w Dropwizard ... Więc jakiej pomocy?

Dziękuję.


Edit: I podszedł do problemu z innej strony, jawnie tworzyć schemat zamiast korzystania hbm2ddl.auto. Zobacz proponowaną odpowiedź.

+0

Mam ten sam problem. Myślę, że możesz podać tylko persistence.xml w ścieżce klas i powinno działać –

Odpowiedz

22

Edytuj: Problem rozwiązany! Robi to w config YAML obecnie działa: (Dropwizard 0.7.1)

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

(od this answer)


Old odpowiedź:

To właśnie Obecnie używam : Klasa wywołująca funkcję SchemaExport hibernacji w celu eksportowania schematu do pliku SQL lub modyfikacji bazy danych. Po prostu uruchamiam go po zmianie moich jednostek i przed uruchomieniem aplikacji.

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); 

    } 

} 

Nie wiedziałem wcześniej o narzędziach hibernacji. Tak więc ten przykład kodu może być użyty w inicjalizacji usługi, aby działał jak hbm2ddl.auto = create.

Obecnie używam go po prostu przez uruchomienie klasy (od zaćmienia lub maven) do generowania i przeglądu wyjściowego SQL.

+0

Nie można znaleźć w dokumentach. Co to jest polecenie generowania schematu? – ravi404