SessionFactory oszczędność pamięci

0

Witam,

mam pytanie dotyczące SessionFactory w Hibernate. Widomo, że jest to obiekt bardzo kosztowny dlatego chciałbym zapytać jak można rozwiązać ten problem przy większej aplikacji. Czy np. po zalogowaniu użytkownik "dostaje" do swojej sessji obiekt SessionFactory utworzony przy logowaniu, który następnie jest wysyłany przy każdym dostępie do DAO ?

0

A po co każdemu użytkownikowi sessionFactory ? Session factory jest jedno a jak gdzieś jest potrzebne to przekazujesz referenceje lub używasz np DI

0

Chyba nie bardzo rozumiem. Jezeli mam paru userow ktorzy moga sie zalogowac to gdy jednemu steorze session factory to jest ono na cala app? W jaki sposob w dao wywolywac w takim razoe session factory dla poszczegolnych metod?

0

Tak ogolnie:
SessionFactory to obiekt "fabryka" z ktorego pobiera sie sesje. W dobrze zaprojektowanej aplikacji powinien byc stworzony tylko jeden taki obiekt (scislej jeden na baze danych... jezli korzysta sie z kilku baz danych). Najlepiej tworzyc go na samym poczatku, czyli np. juz w momencie startu/deployu aplikacji na AS.
Kazda twoja klasa czy to DAO czy jaka tam chcesz powinna w razie potrzeby pobierac sesje wlasnie z tej jednej fabryki.
Metod dostepu jest wiele:

  • mozesz przypisac fabryke do zmiennej statycznej (googluj po HibernateUtil class)
  • mozesz jak pisal kolega wyzej dowiazac do JNDI (pod warunkiem ze twoj AS obsluguje JNDI)
0

najszybciej to Spring support for Hibernate i przestajesz mieć tego typu problemy. Poza tym SessionFactory jak sama nazwa wskazuje jest fabryką i prawidłowo zaimplementowana aplikacja powinna traktować obiekty tej klasy jako singletony per konfiguracja DB (jedna fabryka na jeden PU).

@MrJedi, serwer JEE/Web bez obsługi JNDI nie podpada pod minimum specyfikacji.

0

Rozimiem ze tak jak ma to miejsce przy klasie HibernateUtil obiekt SessionFactory jest tworzony przy pierwszym wywolaniu klasy i istnieje na serwerze do momentu jego resetu poniewaz jest obiektem statycznym?

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