<div dir="ltr"><div><div>Miért van bekapcsolva a join fetching ? Lazy loading a Te barátod. ... egy ideig :)<br><br></div>Üdv<br></div> Zs<br></div><div class="gmail_extra"><br><br><div class="gmail_quote">2013/10/22 Király Péter <span dir="ltr">&lt;<a href="mailto:kirunews@freemail.hu" target="_blank">kirunews@freemail.hu</a>&gt;</span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Sziasztok,<br>
<br>
következő a problémám. Vannak felhasználók, akiknek lehetnek elmentett kereséseik, címkéik, kedvenceik, és API kulcsaik. Mind az öt egy-egy különálló osztály, hozzá tartozó táblázattal az adatbázisban, a user azonosítója köti őket a user objektumhoz. Az egész ügyet a Hibernate kezeli. Amikor egy-egy felhasználónak volt több tucat elmentett eze-aza, akkor ez egyes mentések elkezdtek lassulni. Némi nyomozás után kiderült, hogy amikor egy user objektumot lekérek, akkor a Hibernate outer join-nal összekapcsolja a táblákat és létrejön egy baromi nagy, redundáns taláati lista az adatbázisban (például 94 ez, 9 az, 14 amaz és 5 emez esetén 59 220 soros találati halmaz, ami sosornként tartalmazza az összes tábla összes oszlopát (némelyiket duplán is  -- 94 * 9 * 14 * 5 = 59 220). Egy Hibernate FAQ (<a href="https://community.jboss.org/wiki/HibernateFAQ-AdvancedProblems?_sscc=t#jive_content_id_Hibernate_does_not_return_distinct_results_for_a_query_with_outer_join_fetching_enabled_for_a_collection_even_if_I_use_the_distinct_keyword" target="_blank">https://community.jboss.org/wiki/HibernateFAQ-AdvancedProblems?_sscc=t#jive_content_id_Hibernate_does_not_return_distinct_results_for_a_query_with_outer_join_fetching_enabled_for_a_collection_even_if_I_use_the_distinct_keyword</a>) azt mondja, hogy ez normális. Lehet ugyan trükközni a HQL-ben, de az nem az SQL-t fogja módosítani, hanem a találati halmazon a memóriában fog változatni. Ezt nem nagyon akarom elhinni. Hogy lehet az, hogy amikor mind a adatbázisban, mind a Java objektumok oldalán szépen normalizáljuk a dolgokat, a Hibernate nem egyesével kérdezi le a csatolt táblákat, hanem egy ilyen erőforráspazarló és lassú megoldást produkál? Azt remélem, hogy van valamilyen kapcsoló, amit én nem vettem észre. Merre induljak el, mit tanácsoltok?<br>

<br>
Köszönettel,<br>
Király Péter<br>
_______________________________________________<br>
Javalist mailing list<br>
<a href="mailto:Javalist@lists.javaforum.hu">Javalist@lists.javaforum.hu</a><br>
<a href="http://lists.javaforum.hu/mailman/listinfo/javalist" target="_blank">http://lists.javaforum.hu/mailman/listinfo/javalist</a><br>
</blockquote></div><br></div>