2013-08-06 18 views
30

Patrzę na własność konfiguracji Hibernate hbm2ddl.auto i jego możliwych wartości:Hibernate hbm2ddl.auto, możliwe wartości i co robią

  • validate
  • update
  • create
  • create-drop

Co robią te wszystkie wartości?

Jedynymi Hibernate Reference Documentation mówi krótko o create-drop, ale nic nie mówi o innych wartościach:

hibernate.hbm2ddl.auto

Automatycznie sprawdza czy schemat eksportu DDL do bazy danych, gdy SessionFactory jest tworzony. Przy create-drop schemat bazy danych zostanie usunięty, gdy SessionFactory zostanie jawnie zamknięty.

np.validate | update | create | create-drop

znalazłem same użytecznych wyjaśnień w tych kwestiach przepełnienie stosu:

ale nadal nic w oficjalnej dokumentacji.

+1

Zapoznaj się z odpowiedzi na to pytanie: http://stackoverflow.com/questions/438146/hibernate-hbm2ddl-auto-possible- wartości-i-co-robią –

+0

Właściwie to powiązałem z tym właśnie pytaniem. Szukałem * oficjalnego wyjaśnienia w dokumentacji Hibernate. –

Odpowiedz

11

Podany link jest już oficjalną dokumentacją. Tak więc nie ma nic bardziej oficjalnego i wszechstronnego jak dziś.

Więc myślę, że odpowiedź na Twoje pytanie jest dwojaki:

wiem nie jest to idealna odpowiedź, o której marzyłeś, ale to jest wszystko, co masz dzisiaj.

Ale dobrą wiadomością jest to, że projekt jest open-source, więc masz wszystko, czego potrzebujesz, aby go poprawić :-).

+1

Utworzono błąd z propozycją: https://hibernate.atlassian.net/browse/HHH-8789 –

50

Dla hbm2ddl.auto własności listy możliwych opcji jest:

  • validate: potwierdzić, że schemat pasuje, nie wprowadzi zmian w schemacie bazy danych, prawdopodobnie chcesz to do produkcji.
  • aktualizacja: zaktualizować schemat aby odzwierciedlić podmioty są utrzymywały
  • tworzyć: tworzy schemat niezbędnych dla podmiotów, niszcząc wszelkie wcześniejsze dane.
  • tworzyć upuść: tworzenie schematu jak w tworzyć powyżej, ale także spadać schematu pod koniec sesji. Jest to świetne we wczesnej fazie rozwoju lub testowania.
+0

Próbowałem usunąć odpowiedzi, zapoznaj się z moimi zmianami, aby upewnić się, że odzwierciedlają one pierwotne intencje i są dokładne. – ArtB

+1

Zwróć uwagę, że ** update ** nie utworzy tabeli, która nie istnieje, podczas gdy ** create ** będzie zawsze obcinała wszelkie istniejące dane. nie ma sposobu na automatyczny sposób powiadomienia hibernacji o ** tworzeniu tabeli tylko wtedy, gdy jeszcze nie istnieje ** – humanityANDpeace