შეგიძლიათ ჩამოთვალოთ და აღწეროთ JPA-ში არსებულ შესაძლო მდგომარეობები?
sobes.tech AI
პასუხი AI-სგან
JPA (Java Persistence API) შიგნით არსებები შეიძლება იყვნენ შემდეგი მდგომარეობებში:
-
Transient (გადამწყვეტი) — ობიექტი შექმნილია მეხსიერებაში
newოპერაციით, მაგრამ არ არის დაკავშირებული შენახვის კონტექსტთან და არ არის შენახული მონაცემთა ბაზაში. ამ ობიექტზე ცვლილებები არ არის თვალსაწიერ და ავტომატურად არ ინახება. -
Managed (მართვადი) — ობიექტი დაკავშირებულია შენახვის კონტექსტთან (EntityManager). ამ ობიექტზე ყველა ცვლილება თვალსაწიერია და
flush()ან ტრანზაქციის დამტკიცებისას ავტომატურად სინქრონიზდება მონაცემთა ბაზასთან. -
Detached (გამოყოფილი) — ობიექტი, რომელიც ადრე იყო მართვადი, მაგრამ კონტექსტი დაიხურა ან ობიექტი გამოეყო. ამ ობიექტზე ცვლილებები არ არის თვალსაწიერი და არ ინახება, სანამ ისევ არ მიერთდება.
-
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();