🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.objects
Article #15804

Re: Pojęcie logicznej transakcji w kontekście użycia hibernate'a.

#15804
From: jarekr
Date: Tue, 13 Mar 2007 22:16
63 lines
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-mail
References: <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