2010-01-22 14 views
10

Jak sprawdzić, czy konfiguracja odwzorowania hibernacji pasuje do bazy danych? Chciałbym wiedzieć, czy używam błędnej wersji mapowania hibernacji, zanim zacznę wykonywać aktualizację i zapytania, które następnie zawiodą.Sposób sprawdzania odwzorowania hibernacji na bazę danych

Mam kilka klas, które zostały odwzorowane za pomocą adnotacji Hibernate. Mam również połączenie z odpowiednią bazą danych. Teraz chciałbym sprawdzić, czy mapowanie Hibernuj pasuje do bazy danych.

chciałbym sprawdzić co najmniej następujące rzeczy:

  • wszystkie odwzorowanych tabel w konfiguracji hibernacji mają odpowiedniego obiektu w bazie danych (np tabeli lub widoku)
  • wszystkie odwzorowane pola istnieć w bazie
  • wszystkie odwzorowane pola mają poprawne typy:

Wolałbym, że nie muszę wykonywać kwerend do mapowanych tabel, najlepiej sprawdzanie opiera się wyłącznie na meta danych bazy danych.

Odpowiedz

14

Od Hibernate configuration docs:

hibernate.hbm2ddl.auto

Automatycznie sprawdza czy eksport schematu DDL do bazy danych, gdy SessionFactory jest tworzony. Dzięki create-drop schemat bazy danych zostanie usunięty, gdy obiekt SessionFactory zostanie jawnie zamknięty.

np. sprawdź poprawność | aktualizacja | stwórz | create-drop

Można więc ustawić go na validate i sprawdzić, czy wszystko w swoich mapowaniach hibernacji znajduje się w bazie danych. Jeśli ustawisz go na update, za każdym razem, gdy dodasz odwzorowaną klasę lub właściwość, podstawowy schemat bazy danych zostanie zaktualizowany w celu odzwierciedlenia tej zmiany.

Trzeba również narzędzie wiersza polecenia - SchemaUpdate

+0

Coś takiego szukam. Ale czy jest coś w API, które mógłbym wykonać programowo? –

+1

Możesz wykonać programowo. Napisz mały program, który tworzy SessionFactory z włączoną funkcją "validate". – duffymo

+0

Tak, istnieje narzędzie wiersza poleceń - dodałem to do mojej odpowiedzi. Lub najlepiej zrób to, co sugeruje duffymo. – Bozho

Powiązane problemy