Sobes.tech
Junior — Middle

შეგიძლიათ ჩამოთვალოთ და აღწეროთ JPA-ში არსებულ შესაძლო მდგომარეობები?

sobes.tech AI

პასუხი AI-სგან

JPA (Java Persistence API) შიგნით არსებები შეიძლება იყვნენ შემდეგი მდგომარეობებში:

  1. Transient (გადამწყვეტი) — ობიექტი შექმნილია მეხსიერებაში new ოპერაციით, მაგრამ არ არის დაკავშირებული შენახვის კონტექსტთან და არ არის შენახული მონაცემთა ბაზაში. ამ ობიექტზე ცვლილებები არ არის თვალსაწიერ და ავტომატურად არ ინახება.

  2. Managed (მართვადი) — ობიექტი დაკავშირებულია შენახვის კონტექსტთან (EntityManager). ამ ობიექტზე ყველა ცვლილება თვალსაწიერია და flush() ან ტრანზაქციის დამტკიცებისას ავტომატურად სინქრონიზდება მონაცემთა ბაზასთან.

  3. Detached (გამოყოფილი) — ობიექტი, რომელიც ადრე იყო მართვადი, მაგრამ კონტექსტი დაიხურა ან ობიექტი გამოეყო. ამ ობიექტზე ცვლილებები არ არის თვალსაწიერი და არ ინახება, სანამ ისევ არ მიერთდება.

  4. Removed (წაშლილი) — ობიექტი მითითებულია მონაცემთა ბაზიდან წასაშლელად. ტრანზაქციის დამტკიცებისას, ობიექტი მონაცემთა ბაზიდან წაიშლება.

გადამრთვლის მაგალითი:

EntityManager em = entityManagerFactory.createEntityManager();

// Transient
MyEntity entity = new MyEntity();

em.getTransaction().begin();

// Managed
em.persist(entity);

// Persist-ის შემდეგ, ობიექტი ხდება მართვადი

// Removed
em.remove(entity);

em.getTransaction().commit();

// ტრანზაქციის დამტკიცების შემდეგ, ობიექტი გამოეყო
em.close();