Hibernate JPA Cascade Types

am aflat despre cartografiere entități asociate în hibernate deja în tutoriale anterioare, cum ar fi unu-la-unu de cartografiere și unu-la-multe mapări. Acolo am vrut să salvăm entitatea mapată ori de câte ori entitatea proprietarului relației a fost salvată. Pentru a activa acest lucru, am folosit atributul” CascadeType”. În acest tutorial JPA Cascade Types, vom afla despre diferite tipuri de opțiuni disponibile pentru cascadă prin CascadeType.

cum funcționează tipurile de cascadă JPA?

înainte de a merge mai departe, să ne uităm la modul în care acest atribut tip cascadă este definit în codul. Să avem un exemplu pentru o înțelegere mai clară. Luați un scenariu în care un angajat poate avea mai multe conturi; dar un cont trebuie asociat cu un singur angajat. Să creăm entități cu informații minime din motive de claritate.

EmployeeEntity.java

AccountEntity.java

Uită-te la linia aldină din codul sursă de mai sus pentruEmployeeEntity.java. Acesta definește ” cascade=CascadeType.ALL„și în esență înseamnă că orice schimbare sa întâmplat pe EmployeeEntity trebuie să cascadă la AccountEntity de asemenea. Dacă salvați un angajat, atunci toate conturile asociate vor fi salvate și în baza de date. Dacă ștergeți un angajat, atunci toate conturile asociate cu acel angajat, de asemenea, să fie șterse. Destul de simplu.

dar dacă vrem doar să salvăm în cascadă doar operațiile, dar nu să ștergem operația. Apoi, trebuie să o specificăm clar folosind codul de mai jos.

acum, numai atunci când save() sau persist() metode sunt numite folosind instanță angajat, atunci numai conturile vor fi persistat. Dacă orice altă metodă este apelată la sesiune, efectul acesteia nu va afecta/Cascada conturilor.

tipuri de Cascade JPA

tipurile de cascade acceptate de arhitectura java Persistence sunt următoarele:

  1. CascadeType.PERSIST: cascade type presist înseamnă că operațiunile save() sau persist() se desfășoară în cascadă către entități asociate.
  2. CascadeType.MERGE : tip cascadămerge înseamnă că entitățile asociate sunt fuzionate atunci când entitatea deținătoare este fuzionată.
  3. CascadeType.REFRESH: cascade typerefresh face același lucru pentru operația refresh ().
  4. CascadeType.REMOVE: cascade typeremove elimină asocierea tuturor entităților asociate cu această setare atunci când entitatea deținătoare este ștearsă.
  5. CascadeType.Detașare: tip cascadă detach detașează toate entitățile asociate dacă apare o” detașare manuală”.
  6. CascadeType.Toate : tip cascadă all este prescurtare pentru toate operațiile de cascadă de mai sus.

nu există un tip de cascadă implicit în JPA. În mod implicit, nu există operațiuni în cascadă.

opțiunea de configurare în cascadă acceptă o serie de tipuri de cascadă; astfel, pentru a include doar reîmprospătări și fuziuni în operația în cascadă pentru o relație unu-la-mulți ca în exemplul nostru, este posibil să vedeți următoarele:

deasupra cascadei va face ca colecția de conturi să fie doar îmbinată și reîmprospătată.

Hibernate Cascade Types

acum vă permite să înțeleagă ce este cascadă în hibernare în care scenariul îl folosim.

în afară de tipurile de cascadă furnizate de JPA, există încă o operație în cascadă în hibernate care nu face parte din setul normal discutat mai sus, numit „eliminarea orfanilor”. Aceasta elimină un obiect deținut din Baza de date atunci când este eliminat din relația sa deținătoare.

să înțelegem cu un exemplu. În exemplul nostru de angajat și entitate cont, le-am actualizat ca mai jos și am menționat „orphanRemoval = true” în conturi. În esență, înseamnă că ori de câte ori voi elimina un ‘cont din setul de conturi’ (ceea ce înseamnă că elimin relația dintre acel cont și angajat); entitatea contului care nu este asociată cu niciun alt angajat din Baza de date (adică orfan) ar trebui, de asemenea, să fie ștearsă.

EmployeeEntity.java

AccountEntity.java

TestOrphanRemovalCascade.java

este o modalitate foarte bună de a elimina elementele de potrivire/nepotrivire dintr-o colecție (de exemplu, multe-la-unu sau unu-la-mai multe relații). Trebuie doar să eliminați elementul din colecție și hibernare avea grijă de restul lucrurilor pentru tine. Acesta va verifica dacă entitatea este menționată din orice loc sau nu; dacă nu este, atunci va șterge entitatea din Baza de date în sine.

Lasă-mă să știu de gândurile și întrebările pe hibernate 5 tipuri de cascade sau tipuri de cascade JPA, dacă este cazul.

învățare fericită !!

Oracle Blog pe tipuri de cascade

A fost acest post de ajutor?

anunțați-ne dacă v-a plăcut postarea. Doar așa ne putem îmbunătăți.
Da
nu

Lasă un răspuns

Adresa ta de email nu va fi publicată.