Hej,
Mam kilka pytań dotyczących obiektów session w Hibernate.
-
Jak to w końcu jest z tym session .. czy powinien być tworzony niczym tak samo jak transakcja czyli mały request to od razu
siup otwieramy sesje potem transakcje a potem session.close() ?? Wtedy jak wykorzystać potęgę Hibernate jeżeli chodzi o sprawdzanie zabrudzeń skoro wszystkie referencje które mamy będą w trybie "detached".
Z drugiej znowu strony , chyba głupim pomysłem jest trzymanie jednej session dla całej aplikacji // chociaż przekonuje troche do tego sam Hibernate udzielając getCurrentSession(), ale mając jeden obiekt session jak wtedy z wielowątkowością. -
Co z obiektami session do których straciliśmy referencje bez zamknięcia close()? Bo to kiedy GC usunie to jego sprawa , a session chyba blokuje bazę danych ? Hibernate zapewnia także , że w jednej sesji nie będzie dwóch obiektów trwałych o tej samej tożsamości bazodanowej , a różnych referencjach. Jak uzyskać coś podobnego dla różnych sesji ?
-
Często używając Hibernate używa się też wzorca DAO. Czy można napisać takie DAO aby było całkowicie przezroczyste dla klienta ? Czy jednak zawsze będzie musiał otwierać ten upiorny session, a później transakcje. Powiedzmy przyklad na klasie User. Chcemy aby klient mógł dodawać userów,deletować i ladnie updatować.
-
O ile rozumiem pojęcie transakcji bazodanowej ,a co za tym idzie pochodzenie Transaction to obiekty Session są dla mnie strasznie sztuczne i niewygodne w użyciu. Czy może ktoś przedstawić jakiś swój punkt widzenia na temat session ?