Kādas ir iespējamās Hibernate hbm2ddl.auto konfigurācijas vērtības un ko tās dara?

Es tiešām vēlos uzzināt vairāk par atjaunināšanu, eksportu un vērtībām, ko varētu dot hibernate.hbm2ddl.auto
Man ir jāzina, kad izmantot update un kad ne? Un kāda ir alternatīva?

Šīs ir izmaiņas, kas varētu notikt DB:

  • jaunas tabulas
  • jaunas kolonnas vecajās tabulās
  • dzēstas kolonnas
  • mainīts kolonnas datu tips
  • kolonnas tips mainīja tās atribūtus
  • tabulas svītrotas
  • mainītas kolonnas vērtības

Kāds ir labākais risinājums katrā no šiem gadījumiem?

No kopienas dokumentācijas:

hibernate.hbm2ddl.auto Automātiski validē vai eksportē shēmas DDL uz datubāzi, kad tiek izveidota SessionFactory. Izmantojot create-drop, datubāzes shēma tiks noņemta, kad SessionFactory tiks skaidri slēgta.

piem. validate | update | create | create-drop

Tātad iespējamo opciju saraksts ir šāds,

  • validate: apstiprina shēmu, neveic izmaiņas datu bāzē.
  • update: atjaunina shēmu.
  • create: izveido shēmu, iznīcinot iepriekšējos datus.
  • create-drop: atmet shēmu, kad SessionFactory tiek nepārprotami slēgta, parasti tad, kad lietojumprogramma tiek apturēta.

Šķiet, ka šīs opcijas ir paredzētas kā izstrādātāju rīki, nevis lai atvieglotu jebkādu ražošanas līmeņa datu bāzu veidošanu, tāpēc, iespējams, jūs vēlētos apskatīt šādu jautājumu; Hibernate: hbm2ddl.auto=update in production?.

Komentāri (13)

Konfigurācijas īpašība ir hibernate.hbm2ddl.auto.

Mūsu izstrādes vidē mēs iestatām hibernate.hbm2ddl.auto=create-drop, lai katru reizi, kad izvietojam datubāzi, to nomestu un izveidotu tīru datubāzi, tādējādi mūsu datubāze ir zināmā stāvoklī.

Teorētiski jūs varat iestatīt hibernate.hbm2ddl.auto=update, lai atjauninātu datubāzi, kad mainās jūsu modelis, bet es tam neuzticētos ražošanas datubāzē. Agrākā dokumentācijas versijā bija teikts, ka tas ir vismaz eksperimentāls risinājums; es nezinu, kāds ir pašreizējais statuss.

Tāpēc mūsu ražošanas datubāzei nenoteiksiet hibernate.hbm2ddl.auto - pēc noklusējuma datubāzē netiek veiktas nekādas izmaiņas. Tā vietā mēs manuāli izveidojam SQL DDL atjaunināšanas skriptu, kas piemēro izmaiņas no vienas versijas uz nākamo.

Komentāri (3)

Atjauninot db, es izmantotu liquibase. hibernate shēmas atjaunināšanas funkcija patiešām ir piemērota tikai izstrādātājiem, kamēr tie izstrādā jaunas funkcijas. Ražošanas situācijā db atjaunināšana ir jāveic rūpīgāk.

Komentāri (1)