Hirdetés
- Bírsággal karöltve kötelezi az Intelt a garancia betartására India
- Szabadalmi vita után bukta a német piacot az ASUS és az Acer
- Elképesztő sebességre képesek a Micron közelgő, PCI Express 6.0-os SSD-i
- Még ezüst is van a Pulsar és Vaxee közös egerének receptjében
- AMD vs Intel… hol a Harmadik?! – Elfeledett CPU-k
- Kormányok / autós szimulátorok topikja
- TCL LCD és LED TV-k
- Projektor topic
- Amlogic S905, S912 processzoros készülékek
- NVIDIA GeForce RTX 5080 / 5090 (GB203 / 202)
- Házimozi belépő szinten
- Ami Kínában OnePlus Pad Pro, az errefelé mégis csak Pad 2 lett
- Milyen TV-t vegyek?
- HiFi műszaki szemmel - sztereó hangrendszerek
- Milyen egeret válasszak?
Új hozzászólás Aktív témák
-
Szmeby
tag
válasz
jetarko
#6230
üzenetére
Asszem készült egy olyan service metódus (getFullInitializedById() vagy valami ilyesmi), ami id alapján lekérte az entitást (szigorúan lazy fetch minden mezőre), majd az id-val egyesével legyűjtögette a listákat is és a setterekkel beállította azokat az entitáson. Mindezt beburkolva 1 tranzakcióba.
Megjegyzem, tette mindezt azért, mert állandóan nyitott tranzakció / session nem létezett a programban, mindig csak a service metódusban nyílt, elvégezte a szükséges adatbázis műveleteket majd lezárult. Márpedig lazy fetch esetén a listák nem igazi listák csak proxy objektumok, és amint ráhív az ember gyanútlanul egy ilyenre, miközben nincs mögötte aktív session, a cucc borul, mint annak a rendje.

Persze ha neked mindig van nyitott session-öd, akkor talán nem kell vesződnöd a proxyk igazi listára cserélgetésével.De ezt ne vedd követendő példának, nagyon keveset Hibernate-eztem, és azóta csak felejtettem. Nem tartom magamat hozzáértőnek.
select team0_.id as id1_4_0_, team0_.name as name2_4_0_, team0_.points as points3_4_0_, team0_.price as price4_4_0_, races1_.resultOfTeams_id as resultOf2_4_1_, race2_.id as races_id1_3_1_, race2_.id as id1_1_2_, race2_.date as date2_1_2_, race2_.location as location3_1_2_, resultofdr3_.races_id as races_id1_1_3_, driver4_.id as resultOf2_2_3_, resultofdr3_.resultOfDrivers_ORDER as resultOf3_3_, driver4_.id as id1_0_4_, driver4_.name as name2_0_4_, driver4_.points as points3_0_4_, driver4_.price as price4_0_4_, driver4_.team_id as team_id5_0_4_, users5_.team_id as team_id2_4_5_, user6_.id as users_id1_7_5_, user6_.id as id1_5_6_, user6_.money as money2_5_6_, user6_.name as name3_5_6_, user6_.password as password4_5_6_, user6_.points as points5_5_6_, drivers7_.users_id as users_id1_5_7_, driver8_.id as drivers_2_6_7_, driver8_.id as id1_0_8_, driver8_.name as name2_0_8_, driver8_.points as points3_0_8_, driver8_.price as price4_0_8_, driver8_.team_id as team_id5_0_8_
from TEAM team0_
left outer join RACE_TEAM races1_ on team0_.id=races1_.resultOfTeams_id
left outer join RACE race2_ on races1_.races_id=race2_.id
left outer join RACE_DRIVER resultofdr3_ on race2_.id=resultofdr3_.races_id
left outer join DRIVER driver4_ on resultofdr3_.resultOfDrivers_id=driver4_.id
left outer join USER_TEAM users5_ on team0_.id=users5_.team_id
left outer join USER user6_ on users5_.users_id=user6_.id
left outer join USER_DRIVER drivers7_ on user6_.id=drivers7_.users_id
left outer join DRIVER driver8_ on drivers7_.drivers_id=driver8_.id
where team0_.id=?Ha ezt végrehajtod az adatbázison valamilyen id-val a ? helyén, akkor megnézheted a duplikátumokat. Kis elemszámú listák esetén is nagy resultset képződik ebből.
Az, hogy valami lassú, nem számít. Fontosabb, hogy optimális legyen. Ha teszemazt azonnal szükség van x, y, és z táblákból (összetartozó) adatokra, akkor gyorsabb előállítani azokat egy lekérdezéssel. De ha első körben csak az x-re van szükséged, és fontos a reszponzivitás, akkor y és z ráér később, ajánlott a lazy-re állítani. Az igényektől függ, hogy mi a jó megoldás.
(#6231) jetarko
Szerintem nem. Eagerben minden táblát join-ol és egy lekérdezéssel letudja az adatok elővételét. Lazyben csak a fő entitást veszi elő, majd a size() metódushíváskor aktiválja a proxyt, ami előállít egy újabb selectet, ami a listát tölti fel értelmes adattal. Tehát utóbbi esetben több független lekérdezés pattan.
Új hozzászólás Aktív témák
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- Hosszú premier előzetest kapott az Arknights: Endfield
- Honor Magic8 Pro - bevált recept kölcsönvett hozzávalókkal
- Kormányok / autós szimulátorok topikja
- Nintendo Switch 2
- Alkoholista nevelde
- Formula-1
- TCL LCD és LED TV-k
- Projektor topic
- Amlogic S905, S912 processzoros készülékek
- Mikrotik routerek
- További aktív témák...
- JVC RX 550
- MSI GeForce RTX 5090 32G LIGHTNING Z /ÚJ, BONTATLAN, MAGYAR GARANCIA/
- ELADÓ Keychron K8 Aluminium Frame vezetéknélküli billentyűzet Keychron fa csuklótámasszal (+ajándék)
- MSI Vector 16 Gaming Laptop / RTX 4080 175W / i9-12900HX / 1TB SSD / 16GB DDR5 RAM /
- iPhone 15 GYÁRI 99%-os akkumulátor!!
- BESZÁMÍTÁS! 64GB Patriot Viper 3600Mhz DDR4 memória garanciával hibátlan működéssel
- Dell Latitude E6410 i5 M560, Nvidia NVS 3100M 512MB GDDR3, 4Gb RAM, 250GB HDD, jó akku, számla gar
- DELL Precision 3430 SFF,i7-8700,8GB,256GB SSD,NVIDIA Quadro P620 VGA,Win11
- Apple iPhone 14 / 128GB / Kártyafüggetlen / 12HÓ Garancia / Akku: 85%
- Akció! Felsőkategóriás Gamer PC! I9 14900K / RTX 5080 16GB / 32GB RAM / 2TB Nvme SSD
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest



