Կարող եք նշել և նկարագրել JPA-ում գոյություն ունեցող հնարավոր վիճակները:
sobes.tech AI
Պատասխան AI-ից
JPA (Java Persistence API)-ում գոյությունները կարող են գտնվել հետևյալ վիճակներում՝
-
Տրանսիենտ (Transient) — օբյեկտ, ստեղծված հիշողության մեջ
newհրահանգով, բայց կապ չունի պահպանման կոնտեքստի հետ և չի պահպանվում տվյալների բազայում։ Այս օբյեկտի փոփոխությունները չեն հետևվում և ավտոմատ կերպով չեն պահպանվում։ -
Մենեջեր (Managed) — օբյեկտ, կապված պահպանման կոնտեքստի (EntityManager) հետ։ Այս օբյեկտի բոլոր փոփոխությունները հետևվում են և
flush()կամ գործարքի հաստատումից հետո ավտոմատ կերպով սինխրոնիզվում են տվյալների բազայի հետ։ -
Դետաչդ (Detached) — նախկինում կառավարելի օբյեկտ, բայց պահպանման կոնտեքստը փակվել է կամ օբյեկտը հեռացվել է։ Այս օբյեկտի փոփոխությունները չեն հետևվում և չեն պահպանվում մինչև նորից միանալը։
-
Հեռացված (Removed) — օբյեկտ, նշված է որպես հեռացման համար տվյալների բազայից։ Գործարքի հաստատումից հետո, օբյեկտը կհեռացվի տվյալների բազայից։
Տրանսիցիաների օրինակ՝
EntityManager em = entityManagerFactory.createEntityManager();
// Տրանսիենտ
MyEntity entity = new MyEntity();
em.getTransaction().begin();
// Մենեջեր
em.persist(entity);
// Persist-ից հետո, օբյեկտը դառնում է կառավարելի
// Հեռացված
em.remove(entity);
em.getTransaction().commit();
// Հաստատումից հետո, օբյեկտը դառնում է հեռացված
em.close();