Jpa entitymanager gestionează entități, easyjava

refresh () re-creează entitățile gestionate din baza de date, lăsându-l gestionabil în același timp. Această operație este aceeași pentru entitățile conectate care au cascadă CascadeType. REFRESH sau CascadeType. ALL.

Ce alte condiții pot exista? În primul rând, entitatea "eliminată". Entitatea este eliminată utilizând metoda remove (). care duce la starea "șters" și își amintește că înregistrările din baza de date ar trebui șterse. Această operație este aceeași pentru entitățile conectate care au cascadă CascadeType. REMOVE sau CascadeType. ALL.

O entitate aflată la distanță poate fi restabilită prin apela persist (). care din nou va returna entitatea administrată și va elimina semnele despre eliminarea din baza de date.

În cele din urmă, statul cel mai interesant este "detașat". De obicei, o entitate intră brusc în această stare și pierde conexiunea cu EntityManager care o gestionează. Trecerea la această stare poate apărea atunci când:

  • Serializarea / deserializarea unei entități, trecerea de la jvm la jvm, etc.
  • Sfârșitul tranzacției
  • Închiderea unui EntityManager utilizând metoda close () sau pur și simplu un colector de gunoi.
  • Resetați contextul persistenței EntityManager cu metoda clear ().

Entitatea separată își pierde conexiunea cu baza de date, iar schimbările în ea nu intră în baza de date. Și cel mai rău dintre toate, câmpurile încărcate leneș nu sunt, de asemenea, încărcate. Și nu puteți să o eliminați din baza de date și să nu o actualizați.

Există o singură cale de ieșire din această situație - metoda EntityManager merge (). îmbinare (). aplicată unei entități detașate sau copiază valoarea entității transferate către o entitate existentă cu aceeași valoare a câmpului @id. sau creează o nouă entitate de acest tip și copiază datele în ea. În ambele cazuri, rezultatul este stocat în baza de date și o nouă entitate gestionată este returnată din această metodă. Cel vechi rămâne deconectat.

merge () poate fi de asemenea utilizat cu entități noi. Spre deosebire de persist (), creează o altă entitate de același tip, copiază toate datele în ea și o face ușor de gestionat. persistă (), așa cum este scris mai sus, nu face copii și se traduce în lucruri gestionate care i-au fost transmise.

Ultima stare în care o entitate poate locui este "persistentă". În această stare, entitatea există numai în baza de date, iar programul nu. Pentru a transfera o entitate într-o stare gestionată, adică să o încărcați din baza de date, puteți utiliza metodele Find EntityManager () sau familia metodelor createQuery (). Aceste metode permit construirea de interogări complexe pentru orice nevoie, dar acum voi vorbi doar despre utilizarea de bază: încărcarea unei entități prin identificatorul ei și încărcarea tuturor entităților de un anumit tip.