Care sunt valorile posibile ale configurației Hibernate hbm2ddl.auto și care este rolul lor?

Chiar vreau să știu mai multe despre actualizare, export și valorile care pot fi date la hibernate.hbm2ddl.auto
Am nevoie să știu când să folosesc update și când nu? Și care este alternativa?

Acestea sunt modificări care s-ar putea întâmpla peste DB:

  • tabele noi
  • coloane noi în tabelele vechi
  • coloane șterse
  • tipul de date al unei coloane se schimbă
  • tipul unei coloane și-a schimbat atributele
  • tabele eliminate
  • valorile unei coloane s-au schimbat

În fiecare caz, care este cea mai bună soluție?

Din documentația comunității:

hibernate.hbm2ddl.auto Validează automat sau exportă DDL de schemă în baza de date atunci când SessionFactory este creat. Cu create-drop, schema bazei de date va fi eliminată atunci când SessionFactory este închisă în mod explicit.

De exemplu, validate | update | create | create-drop

Așadar, lista de opțiuni posibile este următoarea,

  • validate: validează schema, nu face nicio modificare în baza de date.
  • update: actualizează schema.
  • create: creează schema, distrugând datele anterioare.
  • create-drop: elimină schema atunci când SessionFactory este închisă în mod explicit, de obicei atunci când aplicația este oprită.

Aceste opțiuni par a fi destinate a fi instrumente pentru dezvoltatori și nu pentru a facilita orice baze de date la nivel de producție, poate doriți să aruncați o privire la următoarea întrebare; Hibernate: hbm2ddl.auto=update in production?

Comentarii (13)

Proprietatea de configurare se numește hibernate.hbm2ddl.auto.

În mediul nostru de dezvoltare am setat hibernate.hbm2ddl.auto=create-drop pentru a renunța și a crea o bază de date curată de fiecare dată când implementăm, astfel încât baza noastră de date să fie într-o stare cunoscută.

Teoretic, puteți seta hibernate.hbm2ddl.auto=update pentru a vă actualiza baza de date cu modificările aduse modelului, dar nu aș avea încredere în acest lucru pe o bază de date de producție. O versiune anterioară a documentației spunea că acest lucru era cel puțin experimental; nu cunosc starea actuală.

Prin urmare, pentru baza noastră de date de producție, nu setați hibernate.hbm2ddl.auto - valoarea implicită este de a nu face nicio modificare a bazei de date. În schimb, creăm manual un script de actualizare SQL DDL care aplică modificările de la o versiune la alta.

Comentarii (3)

Aș folosi liquibase pentru actualizarea bazei de date. caracteristica de actualizare a schemelor hibernate's este într-adevăr doar o.k. pentru un dezvoltator în timp ce dezvoltă noi caracteristici. Într-o situație de producție, actualizarea db trebuie să fie tratată cu mai multă atenție.

Comentarii (1)