Anonīms lietotājs
Vairāk
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?
1037
3
No kopienas dokumentācijas:
Tātad iespējamo opciju saraksts ir šāds,
Šķ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?.
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.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.