Thread View: pl.comp.objects
2 messages
2 total messages
Started by Filip Sielimowicz
Tue, 13 Mar 2007 09:53
Pojęcie logicznej transakcji w kontekście użycia hibernate'a.
Author: Filip Sielimowicz
Date: Tue, 13 Mar 2007 09:53
Date: Tue, 13 Mar 2007 09:53
35 lines
2511 bytes
2511 bytes
Witam, ciężko się w grupę wpasować z takim pytaniem. Dotyczy narzędzia do ORM(object relational mapping) zwanego Hibernate. Dokumentacja hibernate posługuje się pojęciem sesji i transakcji logicznej, gdzie relacja między nimi jest taka: "The lifecycle of a Session is bounded by the beginning and end of a logical transaction. (Long transactions might span several database transactions.)" Interesuje mnie teraz taka kwestia: czy pojęcie transakcji logicznej można np. rozumieć jako cykl operacji użytkownika (pracującego na "grubym kliencie") który wykonuje szereg czynności (otwieranie formatek, wybieranie danych, zamykanie) w celu wypełnienia danych na formularzu (nadrzędna formatka) i na koniec daje "Anuluj" albo "Zatwierdź" ? Kiedy zaglądam np. tu: http://www.hibernate.org/42.html to we wszystkich przykładach w zasadzie granice sesji są identyczne jak granice transakcji bazodanowej, a ja szukam definicji sesji znacznie szerszej niż jedna transakcja - i zastanawiam się czy tak można rozumieć definicję sesji hibernate'a i transakcji logicznej. Spotkałem się z opinią, że przedłużanie życia sesji hibernate ponad czas prostej odpowiedzi (zasadniczo jednotransakcyjnej w sensie bd) na requesty jest poważnym zagrożeniem dla wydajności serwera aplikacji - i nie wiem czy powinienem się tym przejąć bardziej, czy mniej. Będę wdzięczny za wszelkie opinie, najlepiej poparte doświadczeniem ;).
Re: Pojęcie logicznej transakcji w kontekście użycia hibernate'a.
Author: jarekr
Date: Tue, 13 Mar 2007 22:16
Date: Tue, 13 Mar 2007 22:16
63 lines
3625 bytes
3625 bytes
Filip Sielimowicz napisał(a): > Witam, ciężko się w grupę wpasować z takim pytaniem. > > Dotyczy narzędzia do ORM(object relational mapping) zwanego Hibernate. > Dokumentacja hibernate posługuje się pojęciem sesji i transakcji logicznej, > gdzie > relacja między nimi jest taka: > > "The lifecycle of a Session is bounded by the beginning and end of a logical > transaction. > (Long transactions might span several database transactions.)" > > Interesuje mnie teraz taka kwestia: czy pojęcie transakcji logicznej można > np. > rozumieć jako cykl operacji użytkownika (pracującego na "grubym kliencie") > który wykonuje szereg czynności (otwieranie formatek, wybieranie danych, > zamykanie) > w celu wypełnienia danych na formularzu (nadrzędna formatka) i na koniec > daje > "Anuluj" albo "Zatwierdź" ? > > Kiedy zaglądam np. tu: > http://www.hibernate.org/42.html > to we wszystkich przykładach w zasadzie granice sesji są identyczne jak > granice > transakcji bazodanowej, a ja szukam definicji sesji znacznie szerszej niż > jedna > transakcja - i zastanawiam się czy tak można rozumieć definicję sesji > hibernate'a > i transakcji logicznej. Spotkałem się z opinią, że przedłużanie życia sesji > hibernate > ponad czas prostej odpowiedzi (zasadniczo jednotransakcyjnej w sensie bd) > na requesty jest poważnym zagrożeniem dla wydajności serwera aplikacji > - i nie wiem czy powinienem się tym przejąć bardziej, czy mniej. > > Będę wdzięczny za wszelkie opinie, najlepiej poparte doświadczeniem ;). > > Ponieważ to ze mną była dyskusja więc dopiszę istotne fakty. Chodzi o implementację patternu Sesja (hibernate) per Sesja użytkownika - przy założeniu, że tych sesji równocześnie może byc np. 2000. W sumie widze, że się zapędziłem strasząc Filipa że wywali sie po 2gim 3 cim użytkowniku - bo zrozumiałem, że to są sesje z otwartymi "długimi" transakcjami! (ale być może nie są ). Jesli nie są - to wystarczy tylko te sesje odłączać od bazy danych (disconnect) (po requeśćie) i w zasadzie nie będzie problemu (wydajnościowego). Czyli będzie do 2000 sesji hibernate - z tego tylko kilkanaście równocześnie (aktywnych) podłączonych (na czas przetwarzania akcji) - i ew. kilka transakcji. A cała reszta odłączona od bazy - trzyma tylko obiekty. Pewnie będzie działać. Tak czy siak rozwiązanie jest inne niż standardowe (session per request) i ciekawe czy ktoś coś takiego robił (w aplikacji z wieloma użytkownikami) i jakie ma wnioski? - http://www.99-bottles-of-beer.net/language-java-866.html
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads