hibernate:: cachowanie zapyt., transakcje

0

Witam serdecznie,

chcialbym zapytac czy Hibernate cache'uje wyniki zapytan. Mam aplikacje okienkowa ktora korzysta z dobrodziejstw hibernate'a, widac ze po uruchomieniu jej i przejsciu do zakladki gdzie jest jtable do ktorego wartosci sa wybierane z bazy, trwa za pierwszym uruchomieniem najdluzej, w logach widac ze nawiazuje polaczenie itd., no to wiadomo, ze czynnosci niezbedne, potem juz dosc gibko odpowiada na kolejne select'y. Czy przechowuje on w jakis sposob raz wykonany select, bo na pewno zeby wypelnic tabele musi wybrac obiekty z tabeli z bazy danych(w przypadku relacji - tabel) na ktora byla odwzorowana.

a drugie pytanie jest nastepujace, budujac np. zapytanie insertujace jakies dane do bazy, odbywa sie cala procedura czyli pobranie obiektu fabryki, potem na tej podstawie obiektu sesji dzieki ktoremu mozemy rozpoczac transakcje. Teraz pytanie, oczywiscie cala operacja zapisu (insertu) w bazie jest osadzona w wyrazeniu try-catch, gdzie w przypadku powodzenia nastepuje session.commit() - to jasne, co jesli operacja zawarta w bloku wylapywania wyjatku gdzies sie niepowiedzie ? oczywiscie, przebieg programu zostanie skierowany do catch gdzie osbluzymy dany wyjatek. Czy potrzebne jest session.rollback() ? czyli cofniecie transakcji ? skoro i tak nie doszlo do wykonania commit'a ?

bardzo prosilbym o wyoślenie mi tego, dziekuje

0

no jedno moje pytanie znalazlem odpowiedz: Tak - Hibernate cache'uje zapytania :)

czy ktos zna odpowiedz na 1 pyt. ?

0

skoro nie ma chetnych to i na pierwsze pytanie sam sobie odpowiem, ze stosowanie metody session.rollback, jest uzywana po to jesli mamy np. do czynienia z bazy mysql z silnkiem myisam nie obslugujacej transakcje, wtedy proba wykonania session.commit spowoduje ze aplikacja "zawisnie" co bedzie skutkowalo wyciekami pamieci.

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