z pohledu architektury je nejcistejsi reseni udelat DTO objekty ,kde jiz
budete mit patricne dcerinne kolekce "nejakym" zpusobem zinicializovane.
To jestli budete kolekce zinicializovane v DTOcku a nebo ne je veci
vrstvy aplikacni logiky, ktera ji vraci.
Pokud by jste pouzival Hibernate tak to jde jeste vyresit pres "navrhovy
vzor" Open Session in View. Podobne by to zrejme slo udelat i v pripade
pouziti JPA a EntityManageru, kazdopadne by to byla asi pekna prasarna...
Ondřej Fafejta napsal(a):
Zdravím!
Také jsem se s tím setkal a dospěl jsem k závěru, že to jinak vyřešit
nejde.
U JBOSSu fungovala Lazy inicializace.
Ta způsobila to, že se prostě podřízené entity nenačítaly.
Problém vznikl až v místě, kde jste potřeboval přistupovat k podřízeným
entitám.
V tu dobu to vyhodilo výjímku.
Vyřešit se to dalo prostě tak, že jsem si napsal další metody, které
načítaly podřízené entity -
např:
public List<Employee> findEmployeesByCompanyId(int id);
U Glassfishe to je ještě horší - tam LAZY inicializace vůbec nefunguje.
Musí se použít všude EAGER.
Další možnost je použít DTO(data transfer object), který nežádoucí
podřízené entity vůbec neobsahuje.
- to jsem ovšem ještě nezkoušel.
Jde o to, že EJB očekává práci s Remote rozhraním.
Tedy pokud načtete entitu a přenesete jí přes RMI, tak na straně klienta
již není možné načíst podřízené entity.
Je možné, že se mýlím - to bych byl docela rád ;-)
Fafi
Schaumann Jan napsal(a):
Ahoj vsichni,
v me webobe aplikaci resim pristup k db pres EJB. V db mam tabulku
UZIVATEL(id, misto_id,....) a MISTO(id, nazev)
Problem nastava ve chvily kdy mam hodne uzivatelu(1000), a chci je
vypsat na obrazovku.... tak se mi pro kazdeho uzivatele provede SELECT
s jeho misto_id do tab. MISTO. A TO JE STRASNE POMALE!
je to obdoba lazy vazby jako jsou v Hibernate, ale tam se da nastavit
hodnota, napr. na 2 a pak se dostanu na nazev mista aniz bych delal
SELECT....
Nevite jestli to je i u EJB? nobo nevite o nejake cache?
predem dekuji....
Schaumann Jan
________________________ Tel: 737 158 658
E-mail: [EMAIL PROTECTED]
ICQ: 217-356-730
--
S pozdravem Roman "Dagi" Pichlik
/* http://www.sweb.cz/pichlik/ Blog pro kodery */
______________________________________________________________________
This email has been scanned by the MessageLabs Email Security System.
For more information please visit http://www.messagelabs.com/email
______________________________________________________________________