Strona główna
  lazy initialization

kaniagostyn *UKS Kania Gostyń

Referencja czy identyfikator?. ja bym zrobil:

 class Czlowiek {
   Człowiek ojciec, matka;
   ...
 }

i uzyl wzorca NullObject w przypadku ludzi, o ktorych nic nie wiadomo
(czyli tak, jak to sie zazwyczaj robi w normalnych (tj. na kartce)
drzewach genealogicznych)

bylaby wiec klasa

class NieznanyCzlowiek extends Czlowiek{


}


przedefiniowujaca odpowiednio metody nadklasy
(przodkowie Nieznanego sa pewnie tez Nieznani (choc moze nie zawsze))

Nie musisz przeciez tworzyc calego drzewa na poczatku - jak ktos spyta o
  ojca Nieznanego, to stworzysz nowy obiekt klasy Niezanany, zapamietasz
go i przekazesz referencje do niego temu, kto pytal.
Poczytaj o wzorcu 'lazy initialization'

pomysl z PESELEM wydaje mi sie raczej nietrafiony

moje 2 centy
pozdro
a.


Spring Hibernate i lazy loading w Validatorze. Używam:
j2sdk1.4.2_08
SpringFramework 1.2.1
Hibernate 2.1.7
AcegiSecurity 0.8.2
i stosuję lazy loading dla atrybutów typu Set. W zasadzie w większości
przypadków nie mam problemów (działa),
natomiast jeśli odwołuję się do kolekcji w Validatorze, to dostaję wyjątek
LazyInitializationException:
Failed to lazily initialize a collection - no session or session was closed.

   W Validatorze strony odwołuję się w następujący sposób:

public void validate(Object obj, Errors errors) {  Dokument dokument =
(Dokument) obj;
   if (!dokument.getZapoznaniaJednostki().isEmpty()) {
      errors.rejectValue("urlopy", "deleteSaUrlopy", "Nie można usunąć
dokumentu. Został przekazany do zapoznania.");


}


   ZapoznaniaJednostki nie są wstępnie ładowane (są "lazy").
Mam skonfigurowany OpenSessionInViewInterceptor według wskazówek podanych
na:
http://www.jroller.com/comments/kbaum/Weblog/orm_lazy_initialization_...
bez hibernateInterceptor (zamiast  ProxyFactoryBean używam
TransactionProxyFactoryBean). Dopisywałem hibernateInterceptor
jakoPostInterceptors, ale to nie pomagało. Włączyłem debug dla Hibernate i
widzę, że sesja jest zamykana po każdym wyświetleniu strony. Jednak to nie
przeszkadza w innych przypadkach.

Proszę o wskazówki.

   pozdrawiam
   Witek.


LazyInitialization. hej
Jak powinna poprawnie wygladac praca z kolekcjami lazy?
Np znajduje obiekt Uzytkownik, ktory ma kolekcję Rzeczy.
Na formatce wyświetlam szczegoly uzytkownika, a nastepnie liste rzeczy.
Czy powinienem:
a)wywolac Hibernate.initialize na kolekcji
b)wywolac ponownie wyszukiwanie (tylko po co mi wtedy kolekcja w Entity)
c)skorzystac z jakiejs cechy framework'a (Seam)

Marx


LazyInitialization.


hej
Jak powinna poprawnie wygladac praca z kolekcjami lazy?
Np znajduje obiekt Uzytkownik, ktory ma kolekcję Rzeczy.
Na formatce wyświetlam szczegoly uzytkownika, a nastepnie liste rzeczy.
Czy powinienem:
a)wywolac Hibernate.initialize na kolekcji
b)wywolac ponownie wyszukiwanie (tylko po co mi wtedy kolekcja w Entity)
c)skorzystac z jakiejs cechy framework'a (Seam)


IMHO na formatce powinienes miec juz CALY obiekt.
Przed otwarciem formatki - i przekazaniem do niej obiektu - zrobic load().
W Twoim przypadku lazy kolekcje uzywasz po to aby nie ciagnac kolekcji
Rzeczy na liste Uzytkownikow.

..::WojT::..


LazyInitialization. ..::WojT::.. pisze:


| hej
| Jak powinna poprawnie wygladac praca z kolekcjami lazy?
| Np znajduje obiekt Uzytkownik, ktory ma kolekcję Rzeczy.
| Na formatce wyświetlam szczegoly uzytkownika, a nastepnie liste rzeczy.
| Czy powinienem:
| a)wywolac Hibernate.initialize na kolekcji
| b)wywolac ponownie wyszukiwanie (tylko po co mi wtedy kolekcja w Entity)
| c)skorzystac z jakiejs cechy framework'a (Seam)

IMHO na formatce powinienes miec juz CALY obiekt.
Przed otwarciem formatki - i przekazaniem do niej obiektu - zrobic load().
W Twoim przypadku lazy kolekcje uzywasz po to aby nie ciagnac kolekcji
Rzeczy na liste Uzytkownikow.

..::WojT::..


hej :)
W sumie problem rozwiazuje "session in view" a w przypadku Seam uzywanie
EntityManagera zarzadzanego przez Seama

Marx


Hibernate lazy. Pt, 04 sty 2008 o 21:29 GMT, GG napisaÂł(a):


Is possible get persistent object with collection mapped lazy in one
session, close this session, open second session and in this session
read collection without lazy initialization exception ?


1. It`s polish group, so you can`t use english here
2. http://www.hibernate.org/hib_docs/v3/reference/en/html_single/#object...

Pozdrawiam
        Brzezi


Hibernate lazy. fsdsfb

Hello.

Is possible get persistent object with collection mapped lazy in one
session, close this session, open second session and in this session read
collection without lazy initialization exception ?

Thanks in advance
GG



Stworzenie uniwersalnego DAO (spring+hibernate3). Jakub Głuszecki <cthu@wrota.netnapisał(a):


Pawe=B3 Jankowski wrote:

| I wszystko jest fajnie, mam tylko jedn=B1 klas=EA DAO, jednak problem p=
ojawia=20
| si=EA, gdy chc=EA u=BFy=E6 lazy-loadingu. Jak wiadomo sessja jest zamkn=
i=EAta, wi=EAc=20
| pobranie np. user.getRoles() ko=F1czy si=EA wyj=B1tkiem.=20

Je=B6li u=BFywasz Spring-a, to zapoznaj si=EA z OpenSessionInViewFilter -=
=20
dzi=EAki niemu przez ca=B3y czas przetwarzania requestu masz otwart=B1 se=
sj=EA i=20
mo=BFesz u=BFywa=E6 lazy loadingu.


Zastosowanie tego filtru nie dało takiego rezultatu jakbym chciał, a
właściwie to nic nie zmieniło. Nadal przy pobraniu obiektu User , i później w
tej samej akcji user.getRoles() otrzymuję:
2005-05-16 10:44:09,923 ERROR [org.hibernate.LazyInitializationException] -
<could not initialize proxy - the owning Session was closed
org.hibernate.LazyInitializationException: could not initialize proxy - the
owning Session was closed

Może ktoś ma jakiś pomysł na rozwiązanie tego problemu?

Pzdr,
Paweł


hibernate, sesja i lazy loading.


Bordo wrote:
Mam problem z hibernate'm. Mianowicie, nie mam pomyslu, jak zamknac
sesje dla obiektu, ktory posiada kolekcje. Sytuacja ma sie tak, iz
uzywajac strutsow, w akcji pobieram obiekt i wrzucam w request. Stronka
pobiera sobie odpowiednie kolekcje i atrybuty i wszystko byloby gites,
ale nie mam jak zamknac sesji hibernate'a.

Ma moze ktos pomysl, jak to zrobic ?


Zamknij tą sesję np. w filtrze na wyjściu. Możesz też wcześniej, w akcji
wczytać całą kolekcję przez Hibernate.initialize() (z pamięci piszę więc
mogę się mylić co do nazwy) i zamknąć sesję już w akcji. Wada oczywista:
tracisz lazy-loading.


Nurtujące pytanie nr 2. <Obiekty DTO>.


| 2. Obiekty DTO
DTO pochodzą z  czasów przed ORMowych.
Obecnie stosuje się je jednakowoz nadal w w grubych klientach, glownie w celu
unikniecia problemow z
nie zainicjalizowanymi  wartosciami ( lazy loading ).
Ja w aplikacjach webowych nie czuję potrzeby używania.


Zgadzam się z Tobą. Utrzymuję pewien system, gdzie serwer jest w Javie, i na
Tomcacie wystawia webservice's, natomiast klientem jest aplikacja w C#.
Serializację zapewnia Axis. DTO zapewnia 2 sprawy:
- klient nie musi znać modelu serwera. Dostaje dane w postaci już obrobionej,
takiej, w jakiej ma je wyświetlić
- jeśli ustawimy inicjalizację obiektów na nie-leniwą, wówczas przesyłane do
aplikacji klienckiej będą całe drzewka obiektów. Jeśli ustawimy lezy na true, to
przy próbie serializowania klas modelu otrzymamy lazy initialization exception.
Dlatego do przesyłania danych, zamiast klas modelu, należy używać klas DTO.
Jeśli jednak wyświetlanie danych realizuje ta sama aplikacja i nie ma potrzeby
serializowania danych, to IMO obiekty DTO konieczne nie są.


many-to-one/kolekcje-trzymanie obiektu w HttpSession.


Paweł Jankowski wrote:
Witam,

Od dłuższego czasu mam problem z hibernate i mapowaniem many-to-one oraz
kolekcji. Chodzi o to, że jak zapisuję sobie obiekt w HttpSession do
późniejszego użycia, to "odłącza" się on chyba od sesji hibernatowej i nie ma
możliwości dostania się do właściwości mapowanych za pomocą many-to-one, a o
kolekcjach nie wspominając.
Rzuca sobie wyjątkiem "org.hibernate.LazyInitializationException: could not
initialize proxy - the owning Session was closed".

Do całego projektu używam hibernate3 w połączeniu ze springiem. Korzystam z
OpenSessionInViewFilter, ale to nic nie pomaga. To samo się dzieje w
przypadku przetrzymywania listy w sesji użytkownika i późniejszej próby jej
nawigacji (korzystam z PagedListHolder).

Czy może ktoś ma pomysł jak rozwiązać ten problem?

Z góry dziękuję i pozdrawiam,
PJ


W HB3 wszystkie takie mapowania sa domyslnie leniwe, dodaj lazy="false"
do swoich mapowan.


hibernate - jak nie pobierac zbednych obiektow.


| Przy pobieraniu usera, jest w nim grupa, a w niej organization, itd. Co
| zrobic zeby w userze byla TYLKO groupa (juz bez organization)?

poczytaj w manualu hibernate o lazy loading


Przeczytalem rozdzial "14.2. Proxies for Lazy Initialization", ale nie wiem
jak mam zamapowac te klasy.
Wlasciwie, pobierajac pojedynczego usera, mozna mu ustawic grupe reczenie.
Jednak przy kolekcji userow, trzeba ja przeiterowac, a chcialbym uniknac
zabawy w przepisywanie jak w CMP i zwiazanych z tym narzutow czasowych.
Mozesz mi podac jakis link z przykladem? Niby oczywisty problem, a nie moge
znalezc nic sensownego.


hibernate - jak nie pobierac zbednych obiektow.


jar@poczta.fm wrote:
| Przy pobieraniu usera, jest w nim grupa, a w niej organization, itd. Co
| zrobic zeby w userze byla TYLKO groupa (juz bez organization)?

| poczytaj w manualu hibernate o lazy loading

Przeczytalem rozdzial "14.2. Proxies for Lazy Initialization", ale nie
wiem jak mam zamapowac te klasy.
Wlasciwie, pobierajac pojedynczego usera, mozna mu ustawic grupe reczenie.
Jednak przy kolekcji userow, trzeba ja przeiterowac, a chcialbym uniknac
zabawy w przepisywanie jak w CMP i zwiazanych z tym narzutow czasowych.
Mozesz mi podac jakis link z przykladem? Niby oczywisty problem, a nie
moge znalezc nic sensownego.


* Ustaw w mappingu lazy="true"
* W HQL obiekty zawsze są ładowany w trybie lazy, zatem wywołaj

from User u
 left outer join fetch u.group
 where u.id=?

* W criteria zawsze brane jest pod uwagę to co jest ustawione w mappingu.
Sprawdź setFetchMode.

Artur


hibernate - jak nie pobierac zbednych obiektow.
jar@poczta.fm wrote:
| Przy pobieraniu usera, jest w nim grupa, a w niej organization, itd. Co
| zrobic zeby w userze byla TYLKO groupa (juz bez organization)?

| poczytaj w manualu hibernate o lazy loading

Przeczytalem rozdzial "14.2. Proxies for Lazy Initialization", ale nie wiem
jak mam zamapowac te klasy.
Wlasciwie, pobierajac pojedynczego usera, mozna mu ustawic grupe reczenie.
Jednak przy kolekcji userow, trzeba ja przeiterowac, a chcialbym uniknac
zabawy w przepisywanie jak w CMP i zwiazanych z tym narzutow czasowych.
Mozesz mi podac jakis link z przykladem? Niby oczywisty problem, a nie moge
znalezc nic sensownego.


jesli uzywasz XDoclet wystarczy zrobic tak :

package com.mycompany.mypackage;

/**
  * @hibernate.class proxy="com.mycompany.mypackage.MyClass"
  */
class MyClass {


}


--
Leszek Gawron


Spring Hibernate i lazy loading w Validatorze.


Używam:
j2sdk1.4.2_08
SpringFramework 1.2.1
Hibernate 2.1.7
AcegiSecurity 0.8.2
i stosuję lazy loading dla atrybutów typu Set. W zasadzie w większości
przypadków nie mam problemów (działa),
natomiast jeśli odwołuję się do kolekcji w Validatorze, to dostaję wyjątek
LazyInitializationException:
Failed to lazily initialize a collection - no session or session was
closed.

  W Validatorze strony odwołuję się w następujący sposób:

public void validate(Object obj, Errors errors) {  Dokument dokument =
(Dokument) obj;
  if (!dokument.getZapoznaniaJednostki().isEmpty()) {
     errors.rejectValue("urlopy", "deleteSaUrlopy", "Nie można usunąć
dokumentu. Został przekazany do zapoznania.");
}

  ZapoznaniaJednostki nie są wstępnie ładowane (są "lazy").
Mam skonfigurowany OpenSessionInViewInterceptor według wskazówek podanych
na:
http://www.jroller.com/comments/kbaum/Weblog/orm_lazy_initialization_...
bez hibernateInterceptor (zamiast  ProxyFactoryBean używam
TransactionProxyFactoryBean). Dopisywałem hibernateInterceptor
jakoPostInterceptors, ale to nie pomagało. Włączyłem debug dla Hibernate i
widzę, że sesja jest zamykana po każdym wyświetleniu strony. Jednak to nie
przeszkadza w innych przypadkach.


   Problem rozwiązałem w ten sposób, że w metodzie formBackingObject
kontrolera formularza
wymusiłem inicjację kolekcji:
Hibernate.initialize(dokument.getZapoznaniaJednostki());
Nie podoba mi się takie rozwiązanie, ale nic innego nie wymyśliłem.

   pozdrawiam

   Witek.
kolekcji


Hibernate - lazy initialization.

mama takie pytanie, czy dobrze zrozumiałem ruznice w wersji 2 i 3. W wersji 3
pozna inicializacja danych z baz w przypadku many-to-one jest domyslna,
natomiast w 2 nie (i nalezalo recznie to wymusic - czy w ogole takiej opcji
nie bylo?).


LazyInitialization. On 26 Sie, 08:09, Marx <M@nospam.comwrote:


..::WojT::.. pisze:

| hej
| Jak powinna poprawnie wygladac praca z kolekcjami lazy?
| Np znajduje obiekt Uzytkownik, ktory ma kolekcję Rzeczy.
| Na formatce wyświetlam szczegoly uzytkownika, a nastepnie liste rzeczy.
| Czy powinienem:
| a)wywolac Hibernate.initialize na kolekcji
| b)wywolac ponownie wyszukiwanie (tylko po co mi wtedy kolekcja w Entity)
| c)skorzystac z jakiejs cechy framework'a (Seam)

| IMHO na formatce powinienes miec juz CALY obiekt.
| Przed otwarciem formatki - i przekazaniem do niej obiektu - zrobic load().
| W Twoim przypadku lazy kolekcje uzywasz po to aby nie ciagnac kolekcji
| Rzeczy na liste Uzytkownikow.

| ..::WojT::..

hej :)
W sumie problem rozwiazuje "session in view" a w przypadku Seam uzywanie
EntityManagera zarzadzanego przez Seama

Marx- Ukryj cytowany tekst -

- Pokaż cytowany tekst -


Witam

Uważam że wszystko zależy od aplikacji jaką tworzysz. Jeżelli jest to
aplikacja rozproszona - oczywiście nie mówie tu o rozwiązaniach
hardocre z propagacją kontekstu transakcji przez siec ( client
initiated transactions). - w której  to dedykowana warstwa (nazwij ją
service, bussiness) zajmują się logiką oraz  zarządza transakcjami i
która obsługuję żadania warstwy web. Warstwa web komunkaju się z
warstwą service zdalnie (np przez IIOP, RMI i inne takie).
Pomimo tego że istnieją różne rozwiązania-frameworki aby z warstwy web
w momencie dobrania sie do niezainicjalizowanego pola ponownie dobic
sie do warstwy usługowej i dociagnac brakujące dane, rozwiązania
takiego bardzo nie polecam.  W takim przypadku warstwa service musi
zwracac w pelni zainicjalizowane obikety a moim zdaniem jeszcze lepiej
niech zwraca DTO...

W sytuacji kiedy nie mamy rozproszenia bardzo kuszące wydaję się
wykorzystywaniem klas Hibernate/JPA na widoku.  Można to uzyskac za
pomoca OpenSessionInViewFilter który to w swej implementacji tworzy i
binduje sesje do bieżącego wątku...

pzdr miluch


  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • shirli.pev.pl


  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • minecraftpe.pev.pl
  •  Menu
     : kaniagostyn *UKS Kania Gostyń
     : Łazy Dom Wczasowy Posejdon
     : Łazy morze pokoje do wynajęcia
     : Lazy Town Bing Bang
     : Łazy gmina Jerzmanowice-Przeginia
     : Łazy hodowla psów rasowych
     : Lazy Hours Vol 1 rapidshare
     : Łazy nad morzem transport
     : Lazy Hours Vol1
     : Łazy Dom Kultury
     : Łazy ŚRODKI Wczasowe
     . : : .
    Copyright (c) 2008 kaniagostyn *UKS Kania Gostyń | Designed by Elegant WPT