Mam pytanie. Mianowicie czy można rozpocząć jakąś operacje na bazie np modyfikacje w jednej funkcji i skończyć w 2?
dla lepszego zrozumienia:
Otorzę sobie 2 obiekty tej samej klasy w jednym chce wywołać funkcję wprowadzającą zmiany i "przygotować" dane do zapisu a w drugim obiekcie chce aby wywołanie innej funkcji skończyło działanie tej pierwszej, z pierwszego obiektu.
Może jakiś pseudo kod:
public class obecnaSesja {
public void modyfikuj(){
session1 = ConfigHibernateClass.getSessionFactory().openSession(); //singleton do session factory
session1.beginTransaction();
//...
// cialo funkcji modyfikujacej dane z bazy
session.update(Obiekt);
//i tu bym chciał skończyć tą sesję i kontynuować ją w następnej funkcji 2 obiektu tej samej klasy
}
public void sprawdza(){
session2 = ConfigHibernateClass.getSessionFactory().openSession(); //singleton do session factory
session2.beginTransaction();
//...
// ciało funkcji wykonującej zapytanie do bazy czy dany rekord istnieje
// w pierwszym obiekcie znajduje mi dane o podanych parametrach, gdy je modyfikuje (wywoluje 1 funkcje) nic z danymi sie nie dzieje czyli jest ok
//w 2 obiekcie tej samej klasy po wywołaniu funkcji 3 chciał bym aby obiekt został utrwalony a następnie po wciśnięciu znajdź(2 funkcja) znalazł mi już te zmodyfikowane dane.
session2.getTransaction().commit();
}
public void commitSession(){
session1 = ConfigHibernateClass.getSessionFactory().getCurrentSession();
session1.getTransaction().commit();
//
}
private Session session1,session2;
}
Podsumowując:
-2obiekty tej samej klasy
- obiekt1 -> wywołuję funkcje1 która modyfikuje dane ale nie utrwala
obiekt1 -> wywołuję funkcje2 która wyszukuje mi dane o pewnych parametrach (znajduje mi stare dane, jest ok) - obiekt2 -> wywołuję funkcje3 która odpowiada za wznowienie przerwanej sesji1 i zakończenie operacji zapisywania
obiekt2 -> wywołuję funkcje2 która wyszukuje mi już zmodyfikowane dane
wszystko działa poprawnie do momentu aż chcę nawiązać połączenie z przerwana sesją w 1 obiekcie i zakończyć ją w drugim.
Wiem że to co chcę osiągnąć jest trochę bez sensu ale wydaje mi się to dobrym zobrazowaniem działania getCurrentSession() albo ja źle zinterpretowałem sposób działania tego? ;p