Hibernate pytanie

0

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

  1. 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)
  2. 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
1

A ja się zastanawiam czy aby:

session2 = ConfigHibernateClass.getSessionFactory().openSession()

Nie otworzy ci nowej sesji. W takim przypadku getCurrentSession() zwróci ci coś innego.

zamiast tego użył bym getCurrentSession() w stosunku do session2.

0

Faktycznie pomogło! ;]
Dzieki!
Jak zwykle Koziołek ratuje świat ^^

1 użytkowników online, w tym zalogowanych: 0, gości: 1