Hva er de mulige verdiene for Hibernate hbm2ddl.auto-konfigurasjonen, og hva gjør de?

Jeg vil virkelig vite mer om oppdateringen, eksporten og verdiene som kan gis til hibernate.hbm2ddl.auto
Jeg trenger å vite når jeg skal bruke oppdateringen og når ikke? Og hva er alternativet?

Dette er endringer som kan skje over DB:

  • nye tabeller
  • nye kolonner i gamle tabeller
  • kolonner slettet
  • datatype for en kolonne endret
  • en type av en kolonne endret sine attributter
  • tabeller slettet
  • verdiene i en kolonne endret

Hva er den beste løsningen i hvert enkelt tilfelle?

Fra fellesskapets dokumentasjon:

hibernate.hbm2ddl.auto Validerer eller eksporterer automatisk DDL-skjema til databasen når SessionFactory opprettes. Med create-drop vil databaseskjemaet bli slettet når SessionFactory lukkes eksplisitt.

f.eks. validate | update | create | create-drop

Så listen over mulige alternativer er,

  • validate: validerer skjemaet, gjør ingen endringer i databasen.
  • update: oppdaterer skjemaet.
  • create: oppretter skjemaet og ødelegger tidligere data.
  • create-drop: sletter skjemaet når SessionFactory lukkes eksplisitt, vanligvis når applikasjonen stoppes.

Disse alternativene ser ut til å være verktøy for utviklere og ikke for å legge til rette for databaser på produksjonsnivå, det kan være lurt å se på følgende spørsmål; Hibernate: hbm2ddl.auto=update in production?.

Kommentarer (13)

Konfigurasjonsegenskapen heter hibernate.hbm2ddl.auto.

I vårt utviklingsmiljø setter vi hibernate.hbm2ddl.auto=create-drop til å slippe og opprette en ren database hver gang vi distribuerer, slik at databasen vår er i en kjent tilstand.

I teorien kan du angi hibernate.hbm2ddl.auto=update for å oppdatere databasen din med endringer i modellen din, men jeg ville ikke stole på det på en produksjonsdatabase. En tidligere versjon av dokumentasjonen sa at dette var eksperimentelt, i det minste; Jeg vet ikke den nåværende statusen.

Derfor, for vår produksjonsdatabase, ikke angi hibernate.hbm2ddl.auto - standard er å ikke gjøre noen databaseendringer. I stedet oppretter vi manuelt et SQL DDL-oppdateringsskript som bruker endringer fra en versjon til den neste.

Kommentarer (3)

Jeg vil bruke liquibase for å oppdatere db-en din. hibernate&# 39s skjemaoppdateringsfunksjon er egentlig bare ok for en utvikler mens de utvikler nye funksjoner. I en produksjonssituasjon må db-oppgraderingen håndteres mer forsiktig.

Kommentarer (1)