Article View: pl.comp.objects
Article #15804Re: Pojęcie logicznej transakcji w kontekście użycia hibernate'a.
From: 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
Technical Details
Message-ID:
<et77pu$p9b$1@news.dialog.net.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.dialog.net.pl!not-for-mailReferences:
<et5sak$bfg$1@news.onet.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.dialog.net.pl!not-for-mail From: jarekr <jhratajski@popraw.literowki.pzcota.otne.pl> Newsgroups: pl.comp.objects Subject: Re: Pojęcie logicznej transakcji w kontekście użycia hibernate'a. Date: Tue, 13 Mar 2007 23:16:01 +0100 Organization: Dialog Net Lines: 63 Message-ID: <et77pu$p9b$1@news.dialog.net.pl> References: <et5sak$bfg$1@news.onet.pl> NNTP-Posting-Host: xdsl-7312.wroclaw.dialog.net.pl Mime-Version: 1.0 X-Trace: news.dialog.net.pl 1173824127 25899 84.40.137.144 (13 Mar 2007 22:15:27 GMT) X-Complaints-To: abuse@dialog.net.pl NNTP-Posting-Date: Tue, 13 Mar 2007 22:15:27 +0000 (UTC) User-Agent: Mozilla Thunderbird 1.0 (Windows/20041206) X-Accept-Language: pl, en-us, en In-Reply-To: <et5sak$bfg$1@news.onet.pl> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit