2013-01-19 10 views

Odpowiedz

33

Obiekty fabryki sesji należy wdrożyć, korzystając ze wzoru projektu singleton. Instancje SessionFactory są wątkowo bezpieczne i zwykle są udostępniane w całej aplikacji. Ponieważ te obiekty mają dużą wagę, ponieważ zawierają informacje o połączeniu, informacje o konfiguracji hibernacji i pliki odwzorowań, ścieżkę lokalizacji. Stworzenie liczby wystąpień sprawi, że nasza aplikacja będzie miała wagę ciężaru. Ale obiekty sesji nie są bezpieczne dla wątków. Tak więc w skrócie - obiekty SessionFactory są po jednej aplikacji i obiekty sesji są po jednym na klienta.

W związku z tym byłaby to jedna SessionFactory dla źródła danych. Twoja aplikacja może mieć więcej niż jedno źródło danych, więc możesz mieć więcej niż jeden obiekt SessionFactory w tej instancji. Ale nie chcesz tworzyć SessionFactory więcej niż jeden raz w aplikacji.

Zalety: Oczywiście jego poprawę wydajności aplikacji :)

AKTUALIZACJA - Wyciąg z Hibernate Doc

Stan wewnętrzny z SessionFactory jest niezmienna. Po utworzeniu tego stanu wewnętrznego jest ustawiony. Ten stan wewnętrzny obejmuje wszystkie metadane dotyczące odwzorowania obiektu/relacyjnego ( ).

+2

Nie mylisz się DarkHorse SessionFactory nie jest zaimplementowany przy użyciu wzorca projektowego singleton. –

+3

@DarkHorse SessionFactory nie jest Singleton, jest używany jako singleton, jest niezmienny http://docs.jboss.org/hibernate/orm/3.5/javadocs/org/hibernate/SessionFactory.html – anshulkatta

14

Ponieważ utworzenie SessionFactory jest niezwykle kosztowny proces, który wymaga analizowania właściwości hibernacji konfiguracja/mapowanie i tworzenia puli połączeń bazy danych .Creating puli połączeń bazy danych wymaga ustanowienia połączenia z bazą danych (tj tworzenie Connection obiektów), który ma nad głową z powodu czas potrzebny na zlokalizowanie serwera DB, ustanowienie kanału komunikacji i wymianę informacji w celu uwierzytelnienia.

Jeśli więc utworzysz SessionFactory dla każdego żądania, oznacza to, że nie używasz puli połączeń z bazą danych do obsługi Twojego żądania. Musisz skonfigurować nowe połączenie według powyższego procesu dla każdego żądania, zamiast tylko otwierać otwarte połączenie z puli połączeń z bazą danych.

2

Istnieje kilka kluczowych punktów dotyczących jednego SessionFactory obiekt za Zastosowanie: -

1.Single Danych sklep: - To sklep pojedyncze dane dla całej aplikacji. Chociaż możesz mieć wiele SessionFactory, ale każdy SessionFactory będzie miał jedną inną bazę danych z nim związaną.

2.Thread Safe: - SessionFactory jest bezpieczny dla wątków, więc dzięki tej funkcji wiele wątków może uzyskać dostęp do SessionFactory.

3.Immutable: - Po utworzeniu obiektu SessionFactory nie można zmienić ani ustawić wartości Facsesr sesji. Jego stan wewnętrzny jest ustalany w momencie tworzenia.

4.Singleton: - SessionFactory jest zbudowany w momencie uruchamiania aplikacji i jest zgodny ze wzorcem singleton.

Mam nadzieję, że to odpowiedziałoby na twoje pytanie ..

Aby uzyskać więcej informacji na temat tworzenia SessionFactory prosimy mają odnosić się do adresu URL: http://techpost360.blogspot.in/2015/07/what-is-hibernate-sessionfactory.html

2

Ya, Jego bardzo proste do zrozumienia, że ​​SessionFactory śledzić wzorca projektowego singleton. Dzięki temu można utworzyć tylko jeden obiekt w aplikacji otworu. SessionFactory jest również bezpieczny dla wątków, więc tylko jeden wątek może wykonywać jednocześnie swój kod. Instancja sessionFactory jest ważna, ponieważ zawiera połączenie, konfigurację hibernacji, pliki mapujące, ścieżkę lokalizacji, więc jeśli utworzysz numer instancji klasy sessionFactory, kod stanie się bardzo ciężki. Z tego powodu używamy tylko jednej instancji sessionFactory dla jednej aplikacji. Aby poprawić wydajność naszej aplikacji używamy tylko jednej instancji sessionFactory w jednej aplikacji.

Powiązane problemy