🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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.
#15803
Author: Filip Sielimowicz
Date: Tue, 13 Mar 2007 09:53
35 lines
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.
#15804
Author: 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
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