Hibernate fuzionează și entități răcoritoare

în tutorialul anterior, am aflat despre salvarea entităților folosind save() sau saveOrUpdate() metode în hibernate. Acolo am aflat că, în majoritatea cazurilor, nici măcar nu veți avea nevoie de aceste metode, deoarece hibernate gestionează automat actualizările entităților persistente. Trebuie doar să aveți grijă de obiectele tranzitorii în majoritatea cazurilor. În acest tutorial, am discuta câteva gânduri în jurul valorii de refresh() și merge() metoda prezentă în clasa hibernate sesiune.

reîmprospătarea entităților Hibernate utilizând metoda refresh ()

uneori ne confruntăm cu situația în care baza de date a aplicației este modificată cu o aplicație/agent extern și, prin urmare, entitatea hibernată corespunzătoare din aplicația dvs. devine de fapt sincronizată cu reprezentarea bazei de date, adică având date vechi. În acest caz, puteți utiliza metoda session.refresh() pentru a re-popula entitatea cu cele mai recente date disponibile în baza de date.

puteți utiliza una dintre metodele refresh() din interfața Session pentru a reîmprospăta o instanță a unui obiect persistent, după cum urmează:

public void refresh(Object object) throws HibernateExceptionpublic void refresh(Object object, LockMode lockMode) throws HibernateException

aceste metode vor reîncărca proprietățile obiectului din Baza de date, suprascriindu-le. În aplicațiile din viața reală, nu trebuie să utilizați metoda refresh() foarte des, în afară de scenariul menționat mai sus.

să ne uităm la un exemplu de refresh() metoda.

Uită-te deasupra liniilor evidențiate.

  • linia 15 salvați angajatul cu prenumele „Lokesh”
  • linia 26 setați prenumele „Vikas”. Ca entitate este detașat, DB nu vor fi actualizate.
  • linia 27 reîmprospătați entitatea cu baza de date utilizând metoda refresh().
  • linia 32 verificați dacă firstname set în entitate a fost actualizat cu „Lokesh”, deoarece este ceea ce baza de date au acest moment.

a fost vorba despre metoda de reîmprospătare. Să ne uităm o altă metodă similară merge().

fuzionarea entităților Hibernate utilizând metoda merge ()

metoda merge() face exact opusul a ceea ce refresh() face adică actualizează baza de date cu valori dintr-o entitate detașată. Metoda de reîmprospătare a fost actualizarea entității cu cele mai recente informații de bază de date. Deci, practic, ambele sunt exact opuse.

fuzionarea se realizează atunci când doriți ca o entitate detașată să fie schimbată din nou în stare persistentă, cu modificările entității detașate migrate la (sau suprascrie) baza de date. Semnăturile metodei pentru operațiunile de îmbinare sunt:

Object merge(Object object)Object merge(String entityName, Object object)

documentația oficială Hibernate oferă o explicație foarte bună a metodei merge():

copiați starea obiectului dat pe obiectul persistent cu același identificator. Dacă nu există o instanță persistentă asociată în prezent cu sesiunea, aceasta va fi încărcată. Returnați instanța persistentă. Dacă instanța dată nu este salvată, salvați o copie și returnați-o ca instanță nou persistentă. Instanța dată nu devine asociată cu sesiunea. Această operație se încadrează în instanțele asociate dacă asocierea este mapată cu cascade=”merge”.

deci, dacă iau codul de mai jos, de exemplu, atunci punctele enumerate mai jos ar trebui să vă fie clare.

EmployeeEntity mergedEmpEntity = session.merge(empEntity);
  • ‘empEntity’ este entitate detașată atunci când este trecut la merge() metoda.
  • merge() metoda va căuta o instanță EmployeeEntity deja încărcate cu informații de identificare luate de la empEntity. Dacă se găsește o astfel de entitate persistentă, aceasta va fi utilizată pentru actualizări. Alte înțelept un nou EmployeeEntity este încărcat în sesiune folosind aceleași informații identificator ca prezent în ‘empEntity’.
  • datele sunt copiate din ‘empEntity’ în noua entitate găsită/încărcată.
  • deoarece entitatea nouă/găsită este persistentă, toate datele copiate în ea din ‘empEntity’ sunt salvate automat în baza de date.
  • referința acelei noi entități este returnată din metoda merge() și este atribuită variabilei ‘mergedEmpEntity’.
  • ‘empEntity’ este încă entitate detașată.

în exemplul de mai sus, ‘mergedPersistentEmpEntity’ este o entitate nouă care este persistentă. Deci, dacă doriți să orice schimbare mai mult, apoi face în ‘mergedPersistentEmpEntity’ instanță.

asta e tot pentru acest tutorial care acoperă merge() și refresh() metode în hibernare. Amintiți-vă că întrebarea poate fi pusă ca diferență între merge() și refresh() sau diferență între merge() și load() etc. Fiți gata să întâlniți orice astfel de diferență între întrebările interviului.

Învățare Fericită !!

a fost utilă această postare?

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

în tutorialul anterior, am aflat despre salvarea entităților folosind save() sau saveOrUpdate() metode în hibernate. Acolo am aflat că, în majoritatea cazurilor, nici măcar nu veți avea nevoie de aceste metode, deoarece hibernate gestionează automat actualizările entităților persistente. Trebuie doar să aveți grijă de obiectele tranzitorii în majoritatea cazurilor. În acest tutorial, am discuta câteva…

în tutorialul anterior, am aflat despre salvarea entităților folosind save() sau saveOrUpdate() metode în hibernate. Acolo am aflat că, în majoritatea cazurilor, nici măcar nu veți avea nevoie de aceste metode, deoarece hibernate gestionează automat actualizările entităților persistente. Trebuie doar să aveți grijă de obiectele tranzitorii în majoritatea cazurilor. În acest tutorial, am discuta câteva…

Lasă un răspuns

Adresa ta de email nu va fi publicată.