Hirdetés

Keresés

Új hozzászólás Aktív témák

  • jetarko
    csendes tag

    Mindezt juniornak? :) Kétlem :)

    Mert akkor szerinted hol a határ? Hány évtől nem junior valaki java területen?
    Mert szerintem semmi extra nincs a leírtakban, sőt még hiányoznak dolgok.
    Meg ma már elég ritka csak az hogy java. Én is java fejlesztő címszó alatt lettem felvéve és js-t is használni kell rendesen. Ahogy nézem álláshirdetéseket olyan, hogy valaki csak java vagy csak frontend fejlesztő már elég ritka, inkább mindenhez kell valamit érteni és nem kardodba dőlni, ha netán kapsz egy kis frontend feladatot is vmi mai fw-ben

  • jetarko
    csendes tag

    Szia !

    Interjúra megyek.

    Ez alatt mire gondoltál? "van náluk ci".

    Gondolom, hogy generikus típusokat is teljesen tudni kell !?
    Adatszerkezeteket, mint pl. buborékrendezés, különböző keresések fákban?!

    köszi

    gondolom continuous integration
    pl: jenkins

  • jetarko
    csendes tag

    Miért nem lehet már a linket és a képet a szabvány bb codera állítani a riosban...

    Nálam angol és magyar között elég nagy difi van. angol: 80, magyar 116kep. Chat magyarul megy, de fura mert ugye programozás angol, de hát ott nyilván nem csapkodom gyorsan.

  • jetarko
    csendes tag

    TomEE-val játszadozom, egész jó cucc. Persze a Spring Boot-nak közelében sincs, de kezdetnek jó. Spring fanboy lettem :DDD

    jhipster-t nézted? A technology stack elég jó, na meg az a prezentáció is:) Én játszottam vele 1-2 órát és elég jónak tűnt, de vannak benne olyan alapkövek amiket még nem írtam meg magamtól ezért még félretettem.

  • jetarko
    csendes tag

    Szerintetek egy 512MB RAM-os Ubuntun futni fog egy egyszerű Spring boot app és egy MySQL szerver?

    Igen. Nálam fut és még van mellette apache, ts stb és még mindig van hely. De ha nem megy digitalon 2 kattal növelheted.

  • jetarko
    csendes tag

    Ha már sima servlet. Az gond ha én megírtam a hello worldot servletben és azonnal ugrottam Springbe? Vagy érdemes lenne nyüstölni még? Állásjelentkezős szempontból is nézve.

    Es ha mar itt tartunk. Socket, szalkezeles,rmi ezekben mennyire kell toppon lenni mondjuk Spring hibernate mellett?

  • jetarko
    csendes tag

    Nem tudom, de szerintem mindenen végigmennek sorra, amitől érthetővé válik az enterspájz. Azzal a juniorral nekem kifejezetten jó tapasztalataim vannak, aki a csapatomba került.

    Ha már sima servlet. Az gond ha én megírtam a hello worldot servletben és azonnal ugrottam Springbe? Vagy érdemes lenne nyüstölni még? Állásjelentkezős szempontból is nézve.

  • jetarko
    csendes tag

    Most nem vagyok otthon, de út közben nem hagy nyugodni a gondolat. Fut a webapp a gépen, és ha a host gép böngészőjéből nyitok meg egy oldalt, akkor szépen a frontendtől elmegy rest hívás a backendhez, meghívódik a controller megfelelő metódusa, és visszaadja amit várok. Viszont ha másik gépről/telefonról nyitom meg az oldalt böngészőben, a host ip címét beírva, akkor a frontend elküldi a rest hívást a backendnek, a dispatcher elkezdi feldolgozni, de nem jut el a request a controllerig. Elkezdtem, de nem volt időm végignézni mit csinál a dispatcher (doDispatch metódus) és min hasal el, mert indulnom kellett, de jó lenne tudni, hogy mégis mitől lehet ez. Van valami gyakori hiba amit elkövettem?

    CORS talán?

  • jetarko
    csendes tag

    A B tényleg nem a legjobb választás (szerintem sem). Ugyanakkor azért nem csak ezeket tanuljuk, és tényleg piszok sok a matek. De kell is, adott esetben! Ma (tegnap) is mesterséges neurális hálók esetében előjött a parciális deriválás. Hibafüggvények minimalizálása, regresszió, szélsőértékek... Nem véletlenül van modalg is, nagyon helyesen. El lehet menni OKJ-re is, lehet ott többet vesznek progból, ami tényleg prog, de nem ennyire mélyen. Ha ezt a szakot elvégzed, utána nincs gondod azzal, hogy hova menj, mindent meg tudsz ezek után tanulni, szóval full felesleges még 50 tárgyat hozzáadni a képzéshez. Pedig akkor is lehetne mondani, hogy de ez meg ez nem volt. Szóval nem elvárni kell, hanem betanítani, megtanítani...

    Amúgy meg az egész google, csak jól kell tudni használni :D

    Sokkal több mindent tanulunk mint én írtam, de mivel java topic ezért a java-hoz kötődő dolgokról írtam. Abban egyetértek, hogy a matek fontos, a gond csak azzal van, hogy nem gyakorlat orientáltan tanuljuk. A jelenleg menő technológiákat, fw-ket tanítani nincs sok értelme, mert pár év alatt változik,de azért megnézhetnénk egy két dolgot... Az igaz, hogy itthon nem fogok leülni csak úgy nummodot tanulni és ezért ezt oktatják suliban, otthon meg megtanulsz programozni ha érdekel a téma. A legnagyobb gond ott van, hogy boldog boldogtalant felvesznek és ezért nagyon híg a mezőny, ami visszafogja a nagyobb tempót sajnos. De ez ellen nem lehet mit tenni.. De nem akarok nekiállni hosszabban ennél offolni, mert remélem 2hónap múlva túl vagyok a bsc-n és reménykedek, hogy talán msc-n lesz vmi haladóbb dolog is.

  • jetarko
    csendes tag

    Melyik szakirányra gondolsz?

    amirol en irtam az a progtervezo, ha azon belul, akkor C majd B sorrendbe írtam

  • jetarko
    csendes tag

    Lehet, hogy a kérdés komolysága elveszik a bullshit példámban. Arra lettem volna inkább kíváncsi, hogy kb. mit lehetne elvárni egy frissen végzett egyetemistától egy tesztben akinek köze volt a programozáshoz. (legalább több kurzus alatt tanulta). Nincs rálátásom a jelenleg végzett diákok tudásáról.

    Ha felmész pl elte/bme oldalára és megnézed a tantervi hálót, akkor lehet olvasgatni, hogy kb egy tárgy miről szól. Nálunk elte bsc-n nem jutunk sajnos messzire. egyik szakirány főleg: java se és belenyalunk a JPA létezésébe. másik szakirány főleg: c++, c# , asp.net. Van algoritmus és adatszerkezetek ami hasznos tárgy, csak sajnos ez is kevés. Na meg sok matek. Aki nem foglalkozik sulin kívül a témával és elte bsc, attól jó esetben ennyit.

  • jetarko
    csendes tag

    Van egy osztályom aminek az adattagjait validálom, hibernate validator segítségével.
    A következő a problémám:
    Van az osztályban 10 db adattag és mindre van feltétel.
    Amikor teljesen új objektumot veszek fel bejön 10 adat és a validáció remekül megtörténik.
    A többi esetben mondjuk csak 5 adattagot akarok módosítani, de a másik 5 adattagot nem akarom előtte megosztani(pl form-ba rakni,se hidden mezőbe rakni). Ekkor bejön 5 adattag amik lehet, hogy megfelelnek,de a többi 5 miatt elbukik a validáció, mert azok üresek maradnak.
    Erre a megoldás, hogy létrehozok olyan osztályokat ami csak ezt az 5 adattagot tartalmazza és majd az eredeti objektum ezen 5 tagját módosítom vagy megadok előtte minden adattagot, ami nyilván nem a legjobb módszer.
    Jelenleg a problémámhoz elég lenne 2 db ilyen osztályt csinálnom és valószínűleg nem is lenne több eset, de mi lenne ha ez már 30 db különböző osztály? Az összes osztályban ugyanaz a logika, csak más adattagok vannak benne.
    Erre vmi értelme megoldás van?
    Pl gondolok itt olyanra, hogy mikor jön be az adat Spring controllerben, akkor a @Valid annotációban vhogy felsorolnám, hogy melyik adattagokat validálja vagy erre saját Validatort kell írni? Nem próbáltam, de ahogy nézem ha manuálisan hívom meg a validatort, akkor lehet állítani, hogy melyik mezőkre történjen tényleges validáció, valami ilyesmit szeretnék.

  • jetarko
    csendes tag

    (#7103) jetarko:
    Itt szerintem fel kell sorolni azokat a packageket amikben @componentekre hivatkozol. Pl dao(repo) service csomagok is.

    Felsorolhatom, de nem kéne neki rekurzívan bejárni a packageket?

    A spring xml-ben emf-t adtál meg, a repoban meg em-re hivatkozol.
    Tutorialokból raktam össze. A célom az lenne, hogy @PersistenceContext annotációval be tudjak injektálni EntityManagert, és azt használni. Egyébként itt ezt írja: Spring injects @PersistenceContext into Spring components on its own. In order to do so, applications need to be have access to an EntityManagerFactory bean. Gondolom ezért tettek a tutorialban a spring-servlet.xml-be LocalContainerEntityManagerFactoryBean-t.
    Ha ehhez a funkcionalitáshoz, amit írtam, valami más kéne a spring-servlet.xml-be, nyugodtan szóljatok.

    Az xml fájlokban miért van annyi kommentezés?

    Azok olyan dolgok amik most nem kellenek, de később fognak. Először működjenek legalább az alapok.

    (#7104) Lortech:

    Beírtam a persistence.xml-be az alábbi sort az alapján amit floatr linkelt:
    <jta-data-source>java:/DefaultDS</jta-data-source>

    de deployment közben továbbra is error van:

    13:57:38,405 INFO [org.jboss.as.server] (ServerService Thread Pool -- 28) JBAS018559: Deployed "MovieTimeProject.war" (runtime-name : "MovieTimeProject.war")

    (#7105) floatr:

    Ahogy fent is írtam, kipróbáltam, hogy beállítom a jta-data-source-ot, de nem jó. Később szeretném ha az adatbázis 2db clusterezett MySQL instance lenne, köztük egy load balancerrel, és ehhez gondolom nem elég jó a RESOURCE_LOCAL transaction-type. Egyébként Wildfly 8.2-t akarok használni, nem Tomcatet.

    Azt mondod, ha kidobnám a persistence.xml-t a kukába, és helyette az általad adott kóddal configolok a spring-servlet.xml-ben, akkor működőképes lesz a cucc? Ha később JTA tranzakciókra kell átállnom, akkor is megoldható lesz így?

    Szerintem az xml-ben és java kódban megadottnak egyeznie kell, azaz ha ott emf, akkor a java-ban is írd át emf-re.
    A package bejárás meg azért nem megy ha jól látom, mert "com.movietime.controller" van megadva, de a dao ez mellett van és nem benne, ezért vagy megadod, hogy "com.movietime" és innentől bejárja vagy, megadod külön a dao és service package-t is.

  • jetarko
    csendes tag

    Service rétegben akarok egy bizonyos ídő után módosítani az objektum értékén, de nem megy.
    A user bejelentkezik majd kap egy aktivációs tokent, de azt akarom, hogy a token csak x ideig legyen életben.
    A dao és service így néz ki röviden: [link][link]
    Hiba üzenet:org.hibernate.HibernateException: Could not obtain transaction-synchronized Session for current thread
    at org.springframework.orm.hibernate4.SpringSessionContext.currentSession(SpringSessionContext.java:134)
    at org.hibernate.internal.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:1014)

    A szál előtti módosítás megtörténik a db-ben, de mikor a szál elkezdi a módosítást, akkor jön a hiba.

    Nem csináltam még szálkezelést Service rétegen belül, hogyan kéne ezt rendesen kivitelezni?

  • jetarko
    csendes tag

    Tipp:

    Error creating bean with name 'emf' defined in ServletContext resource [/WEB-INF/spring-servlet.xml]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException:

    A spring xml-ben emf-t adtál meg, a repoban meg em-re hivatkozol.
    Az xml fájlokban miért van annyi kommentezés?

    <!-- Use @Component annotations for bean definitions -->
    <context:component-scan base-package="com.movietime.controller" />

    Itt szerintem fel kell sorolni azokat a packageket amikben @componentekre hivatkozol. Pl dao(repo) service csomagok is.

  • jetarko
    csendes tag

    Szeretnék venni vps-t java alkalmazások futtatására, tesztelésére. Alapvetően gyakorlás céljából és ha egyszer belejövök, akkor lehet lenne is rajta vmi alkalmazás:) Kezdem megunni ezt a csak localhost dolgot:)
    Játszadoznék mysql,oracle,mssql, tomcat, weblogic, spring, hibernate-l és hasonló technológiákkal.
    Sima webhosting nem hiszem, hogy megfelelő lenne erre a célra.
    Ingyenes cuccok mint heroku és társai nem érdekelnek.
    Néztem több szolgáltatót is, ami jónak tűnt többet között az Azure,digitalocean. Noname szutykot nem akarok, ezért talán Azure hangzik jól elsőre.
    Linuxhoz nem értek, semmi más webes dologgal nem játszadoztam ami így vhol "kint van", de hát egyszer bele kell tanulni és az elhatározottság megvan.
    Domainnel együtt havonta max 10k-t szánnék rá.
    Vkinek tapasztalata,javaslata van hova érdemes befizetni?

  • jetarko
    csendes tag

    Az ilyet db oldalon szokták megoldani.
    És a db kialakítást felülvizsgálnám. Nem szép, hogy különböző táblákban lévő adatoknak együtt kell egyedieknek lenni. Biztos, hogy jól van megtervezve?

    Köszi a válaszokat, tényleg jobb lesz így.

    A másik kérdésem még nyitott:)

  • jetarko
    csendes tag

    Hogyan lehet levizsgálni azt h pl 10 táblán keresztül legyen egy érték unique?
    Pl: minden táblában van e-mail, de mindenhol unique-nak kell lennie az egész db-t nézve.
    Jelenleg úgy oldottam meg, hogy minden dao-nál az addNewXY esetén levizsgálom az összes táblát, hogy van-e ilyen érték és ha igen dobok egy exceptiont. UpdateXY esetén ugyanez csak ott ha már van ilyen vizsgálom, hogy ahhoz tartozik-e aki updatel. Ez 10 külön dao-nál elég macerás, és ha jön egy 11. akkor mindenhol bővíthetem.

    Másik: Ha olyan adatot akarok lementeni ami db szigorítás szerint nem valid, pl unique, akkor kapok egy ConstraintViolationException-t, de ebből nem tudom kitalálni, hogy konkrétan mire kaptam ezt az exceptiont.
    Olyan adatot nem engedek el db szintig amit validatorral kitudok szűrni, de ez nem minden.

    Ezekre mi a best practice?

  • jetarko
    csendes tag

    A magam részéről feleslegesnek tartom ennyire túlbonyolítani a dolgot. Ha statikus szövegről van szó, akkor annak a pártján vagyok, hogy tároljuk property fájlban, nyelvenként külön-külön:
    messages_hu_HU.properties
    messages_en_US.properties
    stb...
    Egy új nyelv bevezetése pofonegyszerű... persze ehhez matatni kell a fájlrendszeren.

    Amennyiben vannak olyan szövegek, amelyek gyakran változnak, akkor azok lehetnek adatbázisban (akár in-memory db, akár ennek rendszeres backup-jával). Igazából attól függ, hogy mi a célja, mire használod a szövegeket, mennyire érzékeny adatok ezek, stb.

    Azzal, hogy két helyen tárolod a cuccokat, magadra vetted ezek szinkronban tartásának terhét. Ha ez az igény, akkor nincs mit tenni. Gondoltál a teljesítmény problémákra is, csinálsz hozzá pár komponens tesztet, ezeket akár egy CI rendszerben, akár időnként kézzel megfuttatod, és nincs vele teendő. Legfeljebb majd később átírod, a szoftver úgyis mindig fejlődik. :)
    Sosincs jó megoldás, mindig a körülményektől, a felhasználási módtól függ. Mindig kell kompromisszumokat kötni, de ha már ezt teszem, igyekszem úgy, hogy a lehető legegyszerűbb maradjon a végeredmény. Csak ezt tudom tanácsolni neked is.

    Én is túlbonyolításnak érzem, de hát kísérletezek:)
    A csak db-be tárolással az a gondom, hogy ha MVC-ben vagyok, akkor a modelhez mindig adjam hozzá azt a szöveget ami ott megjelenik ez sok-sok model.add sor is lehet vagy nem tudom, hogy lehetne máshogyan.

    Az új nyelv futásidőben való hozzáadás az én megoldásomnál bonyolult, mert entitáson keresztül kezelem a db-t és ha új nyelvet akarok, akkor bővítenem kéne az entitásomat és erről fogalmam nincs, hogy lehetne futásidőben, vagy teljesen máshogyan kéne felépítenem az entitás rendszert, tuti lehetne trükközni, de még nem jöttem rá.

  • jetarko
    csendes tag

    Na megcsináltam.
    Fejlesztés közben a tokeneket tárolom 1db properties fájlban, lehet 10 nyelv, akkor is csak egyben tárolom.
    Írtam egy fv-t, ami a property fájl alapján a tokeneket felveszi db-be, ha van értéke a fájlban, akkor az értéket beszúrja, ha nincs akkor az értékhez a token kerül be maga.
    A másik fv az adott nyelvhez tartozó property fájlt módosítja a db tartalma alapján. Ha ezt meghívom, akkor vagy 1db token értékét cseréli az adott nyelv property fájlban, vagy a db-ben tárolt összes értéket kiírja a fájlba.
    A db-be kerüljenek tokeneket csak akkor kell lefuttatni ha új token kerül a property-be, ekkor az új token bekerül db-be. Innentől csak a 2. fv dolgozik.
    Erre írtam egy felületet, ami onblur műveletre ajaxosan frissíti az adott property fájlban és db-ben szereplő értéket is.
    A cacheSeconds 1-re van állítva. Jelenleg 100 tokennel nagyon gyorsan változtatva a frontenden az értékeket remekül működik, a context újratöltéstől semmi memória nem növekszik.
    Ugye ez által futás közben bármikor beletudok nyúlni a token értékekbe, de a rendszer mégis a property fájlok alapján dolgozik, amihez gondolom valami gyors fa van építve, nem kell szarakodnom folyamatos db basztatás, cachelés dolgokkal.
    Azt még nem találtam ki, hogy ezzel a megoldással futás közben új nyelvet, hogy tudok hozzácsapni, de majd még agyalok rajta.
    A hibája ennek amit jelenleg látok, hogy a property fájl frissítéskor a fájl egésze újraírodik, ez ha nagyon sok token van lehet sokáig tartana. Ezt letesztelem hamarosan mennyi idő lehet 1milla tokent fájlba írni. A másik pedig az lehet, ha sok ember nagyon gyorsan sok tokent módosít egyszerre, de hát ezt nem tudom egymagam leszimulálni:)
    A db réteg fölöslegesnek tűnik és majdnem, hogy az is, de ha cserélem a war-t a tomcatemben és közben egyik token értékét átírtam, akkor a régi propertiekkel felül csapom a jelenlegit és elveszett a módosítás, ha nem szedem le előtte a property fájlt.
    Vélemény?:)

    Najó szálakkal biztos letudnám szimulálni egymagam is D

  • jetarko
    csendes tag

    Na megcsináltam.
    Fejlesztés közben a tokeneket tárolom 1db properties fájlban, lehet 10 nyelv, akkor is csak egyben tárolom.
    Írtam egy fv-t, ami a property fájl alapján a tokeneket felveszi db-be, ha van értéke a fájlban, akkor az értéket beszúrja, ha nincs akkor az értékhez a token kerül be maga.
    A másik fv az adott nyelvhez tartozó property fájlt módosítja a db tartalma alapján. Ha ezt meghívom, akkor vagy 1db token értékét cseréli az adott nyelv property fájlban, vagy a db-ben tárolt összes értéket kiírja a fájlba.
    A db-be kerüljenek tokeneket csak akkor kell lefuttatni ha új token kerül a property-be, ekkor az új token bekerül db-be. Innentől csak a 2. fv dolgozik.
    Erre írtam egy felületet, ami onblur műveletre ajaxosan frissíti az adott property fájlban és db-ben szereplő értéket is.
    A cacheSeconds 1-re van állítva. Jelenleg 100 tokennel nagyon gyorsan változtatva a frontenden az értékeket remekül működik, a context újratöltéstől semmi memória nem növekszik.
    Ugye ez által futás közben bármikor beletudok nyúlni a token értékekbe, de a rendszer mégis a property fájlok alapján dolgozik, amihez gondolom valami gyors fa van építve, nem kell szarakodnom folyamatos db basztatás, cachelés dolgokkal.
    Azt még nem találtam ki, hogy ezzel a megoldással futás közben új nyelvet, hogy tudok hozzácsapni, de majd még agyalok rajta.
    A hibája ennek amit jelenleg látok, hogy a property fájl frissítéskor a fájl egésze újraírodik, ez ha nagyon sok token van lehet sokáig tartana. Ezt letesztelem hamarosan mennyi idő lehet 1milla tokent fájlba írni. A másik pedig az lehet, ha sok ember nagyon gyorsan sok tokent módosít egyszerre, de hát ezt nem tudom egymagam leszimulálni:)
    A db réteg fölöslegesnek tűnik és majdnem, hogy az is, de ha cserélem a war-t a tomcatemben és közben egyik token értékét átírtam, akkor a régi propertiekkel felül csapom a jelenlegit és elveszett a módosítás, ha nem szedem le előtte a property fájlt.
    Vélemény?:)

    Ja és az ékezetes betűket már nem kell konvertálgatni a property fájl kiterjesztése miatt a db vhogy megoldja:)

    Na meg a "nincs adatbázis kapcsolat" is megy db nélkül, de mégis módosíthatom felületről ha akarom:)

  • jetarko
    csendes tag

    "A másik mód az lenne, hogy db-ben tárolok minden token és értéket..."
    Ismerek olyan rendszert, ahol adatbázisban tárolják az üziket. Megvan az előnye és a hátránya, ahogy a property fájlnak is. Megjegyzem, ott nem a Properties osztályt használják erre, hanem van rá egy egyedi megoldás.

    Én a magam részéről a property fájlt favorizálom, mert nem látom azt az üzleti esetet, hogy ezeknek az üzeneteknek futásidőben változniuk kéne. Van egy programod, támogat 30 különböző nyelvet. Az jó esetben 30 property fájl, csókolom.
    Ha adatbázisban lenne, akkor tuti készítenél hozzá valamit, amivel menet közben szerkeszteni is lehet. Az 30 db textarea. Ilyenkor történik az, hogy "ó, csak a magyar/angol nyelvűt írom át, a többi nem érdekes". És elszabadul a pokol.
    Vagy pl. hogyan tervezed kiírni a "Nincs adatbázis kapcsolat" hibaüzit, ha azt adatbázisban tárolod? :D
    Jó, persze a kivételeket bele lehet tolni a kódba, vagy property-be...

    Természetesen lehet olyan szöveg, ami gyakran változik, annak valóban nem property fájlban a helye, de a labelek, hibaüzik, stb. szerintem nem ilyenek.

    Na megcsináltam.
    Fejlesztés közben a tokeneket tárolom 1db properties fájlban, lehet 10 nyelv, akkor is csak egyben tárolom.
    Írtam egy fv-t, ami a property fájl alapján a tokeneket felveszi db-be, ha van értéke a fájlban, akkor az értéket beszúrja, ha nincs akkor az értékhez a token kerül be maga.
    A másik fv az adott nyelvhez tartozó property fájlt módosítja a db tartalma alapján. Ha ezt meghívom, akkor vagy 1db token értékét cseréli az adott nyelv property fájlban, vagy a db-ben tárolt összes értéket kiírja a fájlba.
    A db-be kerüljenek tokeneket csak akkor kell lefuttatni ha új token kerül a property-be, ekkor az új token bekerül db-be. Innentől csak a 2. fv dolgozik.
    Erre írtam egy felületet, ami onblur műveletre ajaxosan frissíti az adott property fájlban és db-ben szereplő értéket is.
    A cacheSeconds 1-re van állítva. Jelenleg 100 tokennel nagyon gyorsan változtatva a frontenden az értékeket remekül működik, a context újratöltéstől semmi memória nem növekszik.
    Ugye ez által futás közben bármikor beletudok nyúlni a token értékekbe, de a rendszer mégis a property fájlok alapján dolgozik, amihez gondolom valami gyors fa van építve, nem kell szarakodnom folyamatos db basztatás, cachelés dolgokkal.
    Azt még nem találtam ki, hogy ezzel a megoldással futás közben új nyelvet, hogy tudok hozzácsapni, de majd még agyalok rajta.
    A hibája ennek amit jelenleg látok, hogy a property fájl frissítéskor a fájl egésze újraírodik, ez ha nagyon sok token van lehet sokáig tartana. Ezt letesztelem hamarosan mennyi idő lehet 1milla tokent fájlba írni. A másik pedig az lehet, ha sok ember nagyon gyorsan sok tokent módosít egyszerre, de hát ezt nem tudom egymagam leszimulálni:)
    A db réteg fölöslegesnek tűnik és majdnem, hogy az is, de ha cserélem a war-t a tomcatemben és közben egyik token értékét átírtam, akkor a régi propertiekkel felül csapom a jelenlegit és elveszett a módosítás, ha nem szedem le előtte a property fájlt.
    Vélemény?:)

  • jetarko
    csendes tag

    floatr: Az oldaladon nem lesznek már újabb mesék?:) Szívesen olvasnám, jó a stílus és a témák is érdekesek:)

  • jetarko
    csendes tag

    Spring mvc még mindig:)
    A stringeket az oldalakról kihelyeztem properties fájlokba(messages_hu,en stb), ez egyrészt elég borzalmas a karakterkódolás miatt, de perpill se xml, se db-be nem bírtam áthelyezni, ezért túlteszem magam rajta.

    Ezt már nem rég kérdeztem, hogy lehetne módosítani futás időben ezeket a tokeneket és most foglalkoztam vele. Úgy oldottam meg, hogy a spring.xml-ben a ReloadableResourceBundleMessageSource bean-ben a cacheSeconds-t beállítottam egy számra. A kódban pedig a Properties osztály segítségével manipuláltam az értékeket. Ez működik is, megváltozik az érték, de azt nem bírtam megcsinálni, hogy direktbe a fájlt is felülírja amiből olvas, de az értéket mégis megváltoztatja az oldalon.
    Ezzel az a baj, ha újraindítom appot, akkor maradnak a fájlban lévő értékek. Erre azt tudom csinálni, hogy kiíratom minden módosításkor(mondjuk félóránként, hogy ne minden egyes átíratásnál) egy fájlba az értékeket és azt bemásolom a properties fájlba, amikor indítom. Ezzel egyrészt meglennének a változtatások is, aminek nem tudom van-e értelme.

    A másik mód az lenne, hogy db-ben tárolok minden token és értéket, majd változáskor ez alapján töltöm fel a properties fájlokat, de ezt nem bírtam megcsinálni, semmi értelmes példát nem találtam erre még.

    Azt olvastam, hogy ezeket a properties fájlokat egy futó alkalmazásnál újratölteni nagyon nem ajánlott.
    Ez igaz erre az esetre is? Vagy ez a context újratöltögetés teljesítmény igényes tud lenni?

  • jetarko
    csendes tag

    Azt szoktam olvasni, hogy aki nem tud rendesen SQL-t írni, annak jó lesz az ORM, mert úgyis lassú utasításokat írna. Aki meg az ORM-t használja gány módon, akkor az is borzasztó lassú tud lenni.
    Alapvetően az sql, pl/sql sose ragadott magával, de az orm tetszik, ezért inkább ezt tanulmányozom jobban:)
    Én itthon nyilván 50soros 4-5táblás dolgokkal szórakozok, ezért az eager-t se érzem, de azt látom, hogy csak azt használni rossz koncepció lenne komolyabb dolognál.
    Ha egy alkalmazásnak 1-2részét annyira optimalizálni kell, hogy az ORM nem elég, akkor a dao-ban írnak csak sql-t vagy akkor az hol helyezkedne el és hogyan?

    Ennek a JTA, DTO dolgoknak utána nézek, ezek teljesen ismeretlen fogalmak számomra.

  • jetarko
    csendes tag

    OpenSessionInViewFilter?

    Már látom a tiltakozó kezeket, mert vannak rá elméletek, hogy ez miért nem tudományos, de nálunk majdnem mindegyik projektben ez van, vagy az EntityManager-es párja.

    Sokat próbálkoztunk olyan paraméterekkel, ahol megadod, hogy melyik collection-t kéne szintén betölteni a dao-ban, de aztán mindig belefutottunk olyan esetekbe, ahol nem lehetett előre tudni, hogy melyikre lesz szükség, és melyikre nem, aztán betöltöttük mindegyiket - elég tudományos ez is.

    Néztem az OpenSessionInViewFiltert, de többhelyen olvastam, hogy ebből teljesítmény gondok lehetnek.
    A több fv nyílván több idő, de akkor valószinűleg megéri.

  • jetarko
    csendes tag

    Eddig mindig elvoltam eager fetch-el, de most már rendesen akarom írni ezeket, ezért ahol kell áttérek lazy-re. Az jó elképzelés, hogy annyi dao fv-t írok, amennyi esetem van?
    Pl entitásban van 10 onetomany lista és az egyikben csak egyiket töltöm meg (Hibernate.initialize), a másikban 2-t és így tovább, ahogy a logika kívánja. Vagy van ennél optimálisabb megközelítés is? Hibernate+Spring

  • jetarko
    csendes tag

    Egy ideje már nagyon úgy érzem váltani kéne linuxra. Eddig nem tetszett és nem is igazán ismerem a linuxot, de pl a directory átnevezés windowson nem ment, linuxon azonnal. Az éles rendszerek elvileg linuxon futnak, ezért gondolom értelmes lenne fejleszteni is azon, amin fut majd. Tudom h run anywhere , de mégis itt van a példa, hogy nem igaz ez teljes mértékben.
    Ha nem csak java-zom, akkor főleg egyre jobban érzem, hogy ez a windows szenvedős tud lenni.
    Írtátok korábban, hogy azon érdemes fejleszteni, ami jobban fekszik embernek, de a kérdés, hogy megérné-e szenvedni heteket h váltsak?

  • jetarko
    csendes tag

    Írta, hogy készül a szakdogájára. Amúgy ha marad ebben a szakmában és folyamatosan fejlődik akkor nagy valószínűséggel 1 év múlva kiröhögi a saját kódját! :) Persze nincs értelme szétszedni, de nem is írtam, hogy szedje végig azt mondom, hogy ne kettő legyen.

    3hónappal ezelőtti kódomat is kiröhögöm :DD Köszi a helpet.

  • jetarko
    csendes tag

    Hat annak nem sok ertelmet latom, hogy REST backend melle, nem SPA klienst csinalsz. Biztos van, csak en meg nem latom, de varom az erveket, marmint tenyleg :))

    Nincs konkrét érvem:) Erre a restful webservice-re még csak most találtam rá, de jelenleg úgy érzem ez a tuti, ha későbbiekben újrafelhasználhatóságra lenne szükség:) De az ajax-os hívásoknak megvan az ára biztos, de annyira nem jártam még utána:)

  • jetarko
    csendes tag

    Sot, igazabol megoldhatod egyetlen projekttel is,

    * Java eseten van ra lehetoseged egy JEE app segitsegevel, pl JSF MVC-vel. +resp. design.
    * Vagy megfoghatod a dolgot JavaScript oldalon is, Hipszter leszek iojs-ben ugy, hogy Express framework, es valamilyen templating engine (pl Jade, vagy Markdown) segitsegevel csinalod meg az appot.

    ** Vagy van egy harmadik, kettot otvozo very-hot-topic megoldas, hogy Isomorfic-usan csinalod meg a projektet, iojs es React segitsegevel. Ez azt jelenti, hogy az elso szerver request alkalmaval (vagy navigationnel) meg szerver oldalon allitod ossze a landing page-et, ezt kuldod el a kliensnek, majd onnantol kezdve ugy mukodik az oldal mint egy SPA. Eddig erre tobb okbol sem volt lehetoseg, de miota van node azota elmeletben mar lehetseges, gyakorlatban meg kellett a React js szeru realizacio, miszerint a React kepes lesz felismerni, hogy mar kliens oldali kornyezetben van, es kepes ugy futni. Ennel a megoldasnal meg a Meteor is emlitest erdemel.

    Ugye az elso esetben nem uszod meg a JavaScriptet sem, utobbi ket esetben pedig csak JavaScriptet kell hasznalnod, igy fejlesztoi szempontbol meguszhato a context switching, mas problemak persze adodhatnak (mennyire mature, mennyire nagy a project, relacios/dokumentum orientalt, stb..).

    Udv

    Spring MVC párti vagyok:) Tudom, hogy meglehet csinálni egy app-pal is csak kíváncsi voltam, hogy valójában szétbontható-e 2 app-ra:) Úgy fogom csinálni, hogy egy app, de mindent rest alapon fogok felépíteni. Sok ismeretlen dolgot írtál, de utána fogok nézni:)

  • jetarko
    csendes tag

    Projekt1
    ======

    Java+REST endpointok+Data tier

    Projekt2
    ======

    JavaScript kliens applikacio, akar Angularral ami AJAX segitsegevel hivja a Projekt1 REST szervizeit.
    Ide ha kell mobilos nezet is, akkor 2 lehetoseged van:

    1: reszponziv design. PC, mobil, tablet minden bongeszoben nyitja meg az oldalt, es a layout igazodni fog a felbontashoz

    2: hybrid mobil applikacio, Apache Cordova segitsegevel. (buzzwords: PhoneGap, Ionic, Touchstone). Ilyenkor egy mobilos applikaciot csinalsz (igen olyat amit feltolthetsz az AppStore-ba, Android Store-ba) es a build soran a cordova csinal neked egy build-browsert amit feltehetsz egy webszerverre.

    Udv

    Köszi, értem. Responsive design-t használtam eddig, de nézegettem már a phonegap-et is. Amit tudni szerettem volna, hogy tényleg van-e értelme az ilyen felbontásnak, de a válaszodból remekül kiderült, hogy jól sejtettem.

    A js oldalon az ajaxos url-hez gondolom érdemes egy globális változót létrehozni ami az url elejét tárolja és ezt felhasználni mindenhol, ha egy idő után kikerülne valós domain-re vagy domaint váltana a későbbiekben.

  • jetarko
    csendes tag

    Ráéreztél. :)
    Tényleg az Angularral is kommunikálhatsz ajaxos hívásokon keresztül. Ugyan azokat a hívásokat írod meg 2X egyszer mv-ként adod vissza másszor pedig JSON-ben.

    "Ugyan azokat a hívásokat írod meg 2X egyszer mv-ként adod vissza másszor pedig JSON-ben."

    Vagy nem értelek vagy nem jól fogalmaztam, mert miért írnám meg 2-szer:)
    Angular js-t valójában még sose használtam, csak nézegettem és ezért nem teljesen tudom, hogyan működik, de sajnos most nincs időm tesztelgetni, de hamarosan már végre lesz:)

    Én arra gondoltam h létrehozok egy project1-t(artifact vagy akárhogy hívják) és ebben létrehozok entitásokat,service,dao és restfull controllereket amibe pl megírom, hogy user felvétele, userek listázása, és user törlése db-be. Ezek ugye mind jsonos műveletek lesznek. Ez lesz az egész alkalmazás "agya".
    Project2-be létrehozok templateket és mondjuk azt mondom h a controller egyik fv-e visszaadja a home oldalt induláskor. Ez lesz az alkalmazás egyik megjelenítése formája.
    Kiteszem a szerverre mind2 war-t.
    Projekt1-ben van listUsers fv ami jsonba visszaadja a usereket. Projekt2-ben meghívom h localhost:8080/project1/listUsers(pl tomcatnél) amikor betölt a localhost:8080/project2/home. Az lenne a kérdés, hogy ez hülyeség vagy ennek van értelme ha tényleg akarok hozzá web,android vagy más alkalmazásokból használni a funkciókat, persze ha értelmesek. Ha csak weboldalnál maradok, akkor ez nyilván csak fölösleges bonyolítás, de jó hosszútávon gondolkodni.

    Köszi szépen, hogy válaszolsz az amatőr kérdéseimre:)

  • jetarko
    csendes tag

    "Ha jól értelmezem azt javaslod, hogy amit csak lehet json-ra építsek fel és akkor máshonnan is lehet hívogatni ha szükséges...."
    Igen ez lenne a lényeg.
    - Template engine-t nem tudod kihagyni, de az nem is probléma. Velocity maradhat persze.
    - Amit még kihagytam, hogy nagyon elegáns tud lenni(és az ilyen apróságok fain pontok a szakdogában) ha verziózod a rest-es hívásokat. Ugyan is előfordulhat és erre a legjobb példa az android alkalmazás, hogy használja X ember az alkalmazást, de ha frissíted az alkalmazást és változik egy hívás akkor meg kell hagyni az eredeti hívást. Erre is keress utána érdemes.
    - Ami még talán fontos lehet és szuper dolog az az adatbázis verziózás. Liquibase vagy Flyway amik szerintem jók, de kereshetsz alternatívát.

    Annak van értelme, hogy 2 projektet csinálok, az egyik a restful webservice, entitások logika stb, míg a másik pedig csak a templatek hívása és angular js controllerek?

  • jetarko
    csendes tag

    "Nézetek" mellé írhatod az API-t is Controllerekbe, de persze az lenne a legszebb ha az API-val kommunikálnál teljesen minden front-end részről. A template-engine-t nem tudod elhagyni. Ajánlom a themyleaf-et, de ha sima JSP-s az sem para. Security része mind a kettőnek van az pedig kötelező egy webappnál.
    Szép rest-api-design írható és sokkal flexibilisebb, angularral meg tökéletesen fog működni.
    Springes youtube csatornán sok kiemelkedő videó van a fejlesztőktől.

    Szakdoga javaslat: legyen kevesebb, de minőségi. Figyelj az apróságokra. (cache, security, validáció, stb. stb.)

    Köszi a választ!

    Ha jól értelmezem azt javaslod, hogy amit csak lehet json-ra építsek fel és akkor máshonnan is lehet hívogatni ha szükséges. Arra így utólag rájöttem, hogy nem lenne olyan egyszerű kihagyni a template engine részt, mert nem lenne belépő pont az alkalmazásnál ha jól sejtem. Én eddig velocity-t használtam, érdemes áttérni thymeleaf-re?

  • jetarko
    csendes tag

    A legjobb amit ajánlottak nekem és most éppen azzal foglalkozok, az a Thinking on Java angolul :K

    Agyhullám-ról én is sok jót hallottam. Ha angol nem gond, [itt] sok jó könyvet lehet találni.

  • jetarko
    csendes tag

    Sziasztok!
    Tudtok jó Java "tananyagot" ajánlani? Az alapokat tudom, az OOP rész nem teljesen tiszta, hogy mit hogy kell használni.
    Grafikus alkalmazások készítéséhez is keresnék tutorialt.

    Sziasztok.

    Csinálgatok egy weboldalt Spring mvc-vel még mindig:) Ma gondoltam rá, hogy tudnám ezt rendesen optimalizálni mobil-ra. Az opciók:

    - Spring mobile: elég jónak tűnik, mert mivel kevesebb adat jelenik meg úgyis, ezért kevesebb adatot is kellene átadni, ezért létrehozhatnék új template-t is mobilnézethez és nem kéne annyit css-sel szórakozni.

    - Spring Android: elkezdtem az androidos appokról olvasni, mert nem fejlesztettem még android-ra. Néztem lehet native meg webapp-ot is csinálni, de a webapphoz url-ket kell hívogatni ami json/xml adatokat ad majd vissza, de mivel a meglévő controllereim nézeteket adnak vissza, ezért nem lenne túl optimális ez. Ekkor ráakadtam a spring webservice-re és ez tetszett a legjobban.

    - Spring restful webservice: Ahogy olvastam a webservice-s dolognak az lenne a lényege, hogy egyszer megírom a szerveroldalam és innentől kezdve mind1, hogy ezt weboldal, android,ios vagy különböző weboldalak hívogatnák. Azonban mivel ezek restful, soa-s dolgok ezeknél a template engine rész teljesen kieshet és ez még tetszik is, mert mondjuk webhez átírhatnám angular js-re, továbbá azt írják neten, hogy igazán jól kinéző ui-t csak kliens oldalon lehet összehozni és a serveren való renderelés meg overkill,de ezt se igazán értem. Ha átírom az egészet webservice-re, akkor pl a html-s nézetek kerüljenek ugyanabba a war-ba vagy szervezzem ki új war/jar-ba vagy nem tudom mibe. Ekkor továbbgondolkodtam és rájöttem, ha külön tudnám ezeket bontani akkor kitudnám rakni őket külön szerverekre is(nem tudom ennek van-e értelme). Ahogy olvasgattam tovább, láttam, hogy ez a módszer viszont rontja a seo szempontokat(nagyon nem értek hozzá). Na meg mintha ezt jobban is lehetne tesztelni, mint a sima template engine-s megoldást.

    Melyik megközelítést szokták alkalmazni általában valós projekteknél? Nekem ez a webservice tetszik a legjobban, de biztos van több hátránya is.
    Eddig még csak spring-el szórakoztam és tetszik is, ezért nézegettem csak spring-es témákba.
    2 hét múlva kezdem el szakdogám és nem tudom melyik úton induljak el. Nem a könnyű út érdekel, hanem az optimális, ami persze alkalmazásfüggő, de mivel egyszer majd nagy projekteken akarok dolgozni, azt az utat járnám inkább:)

    Vki tisztába tudná rakni ezeket a gondolataimat? Ha vki végigolvasta és válaszol, köszi. Ha sok ökörséget írtam bocsi:)
    Amúgy lassacskán lehetne csinálni vmi haladó java forumot is.

  • jetarko
    csendes tag

    Valami ilyesmi nem jó?
    Csak valahogy a session-ben kellene tárolni a választott nyelvet.

    Adatbázisban szerintem ne akarj ilyet ha nem muszáj de ha mégis akkor használj valami cache-t.

    A fájlból előre beégetett adatok megoldás jelenleg is működik, de azt szeretném, hogy az oldalon tudjam változtatni az értékeket és ne a fájlokba keljen irkálnom manuálisan. Az hogy futás közbe új nyelvet is hozzáadhassak az nem olyan fontos, csak gondoltam azt is megemlítem:)
    Azt sejtettem, hogy a DB piszkálás nem túl optimális, a cache dolgokat még nem tudom, hogy működnek, de majd utánaolvasok.

    floatr: Ezt a megoldást majd kipróbálom és utánanézek az AbstractMessageSource-nak is.

    Am ezt majd szakdogához szeretném megcsinálni, mert sokkal jobbnak tűnik mint az előre sima fájlokból és nem adok lehetőséget a stringek módosítására.

    Köszi a válaszokat.

  • jetarko
    csendes tag

    Hali, még mindig Spring:)

    A weboldalamat szeretném többnyelvűvé varázsolni. A properties fájlos megoldás megy, de ez nem tetszik. Olyat szeretnék, hogy db-ben tárolódnak kulcsok és ezekhez lesz annyi oszlop amennyi nyelv. Az értékeket az egyik oldalon lehetne állítani és azonnal cserélődne a megjelenésbe azaz semmi újraindítás vagy redeploy.

    Nem találtam semmi értelmes példát, leírást erről, hogyan lenne érdemes hatékonyan csinálni.
    Jelenleg úgy képzelném el, hogy a controllerbe az adott oldalakhoz hozzáadnám egy listába azokat az értékeket az aktuális nyelv szerint amik megjelennek az adott lapokon. Ez ugye sok-sok db piszkálás mindig, ami sok szövegnél nem valami hatékony. Ha számít hibernate-t használok. Vmi tanács, tipp?:)

  • jetarko
    csendes tag

    Velocity vagy freemarker szvsz.

    És ha kihagynám a template engine részt, és helyette beüzemelném az Angular js-t? Mondjuk fogalmam nincs, hogy mikor melyik megoldást érdemes használni. Erről tudsz valamit mondani?:)

  • jetarko
    csendes tag

    Template engine-k közül szerintetek melyik a legjobb Spring és portlethez? Eddig tanulgattam kicsit jsp-t és főleg velocity-t, most elkezdek a freemarker-rel is játszani. aztán thymeleaf, jtwig stb.

  • jetarko
    csendes tag

    Ezt a "minden oldalon" megfogalmazást nem értem.

    Általános szabály, hogy az adatbázis kezelését és az ehhez kapcsolódó hibakezelést 1 helyen oldjuk meg, az esetleges hibákat továbbdobjuk és a használat helyén csak ezeket kezeljük valamilyen módon. Nyilván ha Exception-t dobsz, akkor azt minden helyen kezelni kell, ahol használod.

    A minden oldal alatt azt értettem, hogy minden függvény ahol meghívom az adatbázis-t, de értem a lényegét, ami logikus is, hogy mindenhol try-ba kell raknom.

  • jetarko
    csendes tag

    Hát nem igazán értem, hogy ez mitől jobb annál, mint ha simán kiírnám, hogy pl: /home.

    Kb. azért, amiért a konstansok használata jobb, mint a kódba égetett szöveg. Másrészt 15 kontroller összes path-ja mondjuk egy osztályból módosítható.

    @Override azért van, mert nincs bemásolva az egész osztály, ami egyébként implementál egy interfészt, ami a jelen probléma szempontjából indifferens.

    Hm, lehet benne valami, lehet átírom az egészet ilyenre vagy a következőt így kezdem.

    Jelenleg elég sok oldalon van adatbázis kezelésem. Amikor elkezdtem csinálni,akkor eszembe se jutott, hogy lehet, hogy az adatbázis nem érhető el, ezért nem kezeltem sehol, hogy tényleg elérhető vagy nem. Most az egyik oldalon beraktam try-ba a lekérdezést, ezért ott letudom kezelni, de a többi oldalon jön a hiba, ha az adatbázis kapcsolat nincs.
    Minden egyes helyen try-ba kéne raknom vagy van erre valami szebb megoldás? Hibernate-t használok, ha ez számít.

  • jetarko
    csendes tag

    Persze.

    Itt egy darab kontrollermetódus:

    @Override
    @RequestMapping(value=RestConstants.AppInfo.SERVICE_NAME, method = { RequestMethod.GET, RequestMethod.POST })
    protected HttpEntity<byte[]> processRequest(HttpServletRequest request) {
    return super.doIt(RestConstants.AppInfo.SERVICE_NAME, request);
    }

    és a hozzátartozó interfész:

    public interface RestConstants {

    @RestApiFunction(name = "Application info", description = "Provides information about the application", responseClass = RestAppInfoBean.class)
    public interface AppInfo {

    @RestApiRequestParameter(service = true, description = "")
    static final String SERVICE_NAME = "appinfo";

    }

    }

    Ez egy restapi implementáció darabja, pár saját annotációval megspékelve.
    Mondjuk ez egy régebbi megvalósítás, ami még nem Enum-ot használ, azt éppen keresem a projektben :)

    Hát nem igazán értem, hogy ez mitől jobb annál, mint ha simán kiírnám, hogy pl: /home.
    @Override az miért van a @RequestMapping-nál?

  • jetarko
    csendes tag

    Sziasztok!

    Lehet kicsit pofátlan kérésnek tűnik, de végső elkeseredettségemben már nem tudok mit csinálni.
    Segítene valaki megírni egy java beadandót?
    Ez lenne az a kis aranyos. Nem kell nekem maxpontosra, sőt elég lenne akár csak az első két részfeladat valahogy nagyvonalakban leírva.

    Köszönöm előre is!

    Van még 3,5órád hajrá. Simán meglehet csinálni annyi idő alatt. Nem elég részfeladatot megcsinálni, az egészet kell. Ha elkezdted csinálni és elakadtál, akkor inkább kérdezz.

  • jetarko
    csendes tag

    Nálunk úgy van ez, hogy Enumban vannak az útvonalak. Ami nem sokat ad a dinamikának, de legalább nem szétszórva vannak a szerencsétlenek.

    Ezt nem egészen értem, tudnál írni egy példát? Meg ez arra jó, hogy ha tudsz egy url-t, akkor azonnal odatudsz ugrani a fv-hez? A saját alkalmazásomba már van 50-60 url 7-8controllerbe és nem rögtön tudom mi hol van, néha szívok is ezzel 1-2percig:(

  • jetarko
    csendes tag

    A mykong-féle nagytudásúak bemutatnak pár mórickát és az alulképzettek azt hiszik, hogy ez a frankó :) Volt nekem is egy projektem, gyönyörűen meghúzták a DAO rétegben a tranzakciós határokat :D Persze EE környezetben :)

    Valahol el kell kezdeni és mivel suliba ilyet nem tanítanak, ezért első körbe az ilyen netes tutorialokat nézegettem, de azt én is leszűrtem, hogy nem az igaziak, már ha egyáltalán működnek.
    Suliba belenéztünk kicsit JPA-ba, de amúgy csak SE volt.
    Majd most utána akarok nézni a memory profiling-nak meg az alkalmazás szerverek konfigurálásának, mert az, hogy én localhost-ba elszórakozok egy projectel az oké, de ha ez éles project lenne, akkor gondolom számítana memória használat, skálázhatóság és még nem tudom mik.
    Még fél évig suli mellett nem tudok menni melózni, ezért addig marad az itthoni tanulgatás, mert érdekel a java ee világa.

    És miből lenne érdemes tanulni a netes tutorialok helyett? Álljak neki olvasni az igencsak hosszú hibernate és spring doksit?

    Ha már szóba jöttek a design pattern-ek párat mondanátok, amiket érdemes lenne tanulgatni, használni ebben a témában?

  • jetarko
    csendes tag

    Töröltem az EAGER-t, majd módosítottam a fv-t és így jól működik.
    Az oké, hogy az EAGER lassabbá teszi az alkalmazást, de ha ezeknek a listáknak a mérete kicsi, akkor gondolom nem számít. MySQL-t használok

    (#6228) Szmeby: Többszöröződés, jelen esetbe 2 helyett 8 lett a lista mérete.
    És ezt a külön Select-et hol kéne megvalósítani? Csináljak olyat, hogy a Driver táblából lekérem azokat a sorokat amiknél a team_id megfelel annak amit keresek?

    Bekapcsoltam a show_sql-t és ezt a förmedvény-t dobja. Az utolsó sor csak akkor van ha a fv-be beírom a t.getDrivers().size()-t.

    Ha beírtam a fv-be ezt a bónusz sort, akkor végülis EAGER-be maradtunk, csak nem annotációval értem el a hatást, hanem manuálisan vagy nem?

  • jetarko
    csendes tag

    Pedig nekem is van hasonló mapping pár, és nem látok benne hibát. Kipróbáltam a saját alkalmazásban átírni a collection-t EAGER-re, de akkor sem csinálta ezt. Azt még esetleg megpróbálhatnád, hogy egy teszt erejéig kiszeded az EAGER-t, és a korábban bemásolt kódrészletet kibővíted így:

    public Team getTeamById(int id) {
    Session session = this.sessionFactory.getCurrentSession();
    Team t = (Team) session.get(Team.class, new Integer(id));

    // ha lazy collection, akkor így betölti az elemeit egy második query-ben
    t.getDrivers().size();

    return t;
    }

    Még esetleg azt tudom elképzelni, hogy dialect-függő a dolog. Én eddig mssql, postres és derby adatbázisokkal használtam, de csak elcseszett join-ok esetében találkoztam hasonlóval.

    Annyit még érdemes megfontolni, hogy az EAGER típusú kapcsolatok nagyon oda tudnak vágni az alkalmazásnak, ezért is alapértelmezett a LAZY. Én mindenhol ezt használom, és inkább egy OpenSessionInViewFilter-t teszek a web.xml-be. Oda akkor viszont már kelleni fog tranzakció is meg egyebek.

    Töröltem az EAGER-t, majd módosítottam a fv-t és így jól működik.
    Az oké, hogy az EAGER lassabbá teszi az alkalmazást, de ha ezeknek a listáknak a mérete kicsi, akkor gondolom nem számít. MySQL-t használok

    (#6228) Szmeby: Többszöröződés, jelen esetbe 2 helyett 8 lett a lista mérete.
    És ezt a külön Select-et hol kéne megvalósítani? Csináljak olyat, hogy a Driver táblából lekérem azokat a sorokat amiknél a team_id megfelel annak amit keresek?

    Bekapcsoltam a show_sql-t és ezt a förmedvény-t dobja. Az utolsó sor csak akkor van ha a fv-be beírom a t.getDrivers().size()-t.

  • jetarko
    csendes tag

    Bedobnád azért a biztonság kedvéért a két Entity kódját ide? Nekem ez elég gyanús ebben a formában

    team
    driver

    Ebben most látom vmiért még List van, de a lényeg ugyanaz

  • jetarko
    csendes tag

    Eh, pont most ütköztem bele egy hasonló problémába :) Duplikált eredmény. Egy DISTINCT megoldotta, de nekem még nem tetszik így.

    szerk:

    Pontosabban NamedQuery-t használunk. Az OneToMany alapból Lazy, de Eagerhez írtunk egy FETCH JOIN-os queryt, ami a rohadt életbe duplikál. Egy SELECT DISTINCT megoldotta. Nézegetem a netet, hogy mi lenne a szebb megoldása....

    Köszi a választ, örülök, hogy nem én vagyok ilyen béna, de a google skillemen van mit javítani mert hasonló dolgokat írtam be, de még se találtam stackoverflow-os kérdést erre.

    Most magamnak írogatok csak programokat ezért az adatbázis mérete nyilván kicsi, de ha van 1millio rekord akkor az adatok lekérése Set-tel sokkal lassabb mint bármelyik List a beszúrási idő miatt. Vagy az elején teljesen felesleges hatékonysági problémákon gondolkodnom?

    Amúgy netes tutorial alapján csináltam dao és service-ket és ahol konkrétan lekérem az így néz ki:

    public Team getTeamById(int id) {
    Session session = this.sessionFactory.getCurrentSession();
    Team t = (Team) session.get(Team.class, new Integer(id));
    return t;
    }

    A team entitásban meg ugye csak simán van egy Set<Driver> és aztmondom, hogy getTeamById(1).getDrivers() szóval nem látom hova rakhatnám a distinct-et ezért marad Set.
    Vagy dobjam a dao és service osztályt és ilyen namedQuery-ket írjak?

  • jetarko
    csendes tag

    Sziasztok

    Hibernate-ben van egy onetomany kapcsolatom:

    @OneToMany(mappedBy="team", fetch = FetchType.EAGER)
    private List<Driver> drivers;

    és a párja:
    @ManyToOne
    @JoinColumn(name = "team_id")
    private Team team;

    Spring MVC-t használok és megírtam dao-kat,service-ket ha ez számít. xml-ben semmi mappingolást nem állítok.
    Amikor lekérem az egyik csapathoz tartozó pilótákat, akkor vmiért többször teszi bele a listába ugyanazokat az elemeket. Van amikor A,B,A,B,A,B de van h A,A,B,B,A,A,B,B sorrendben kerül a listába. Ha átírom set-re megoldódik a probléma, de gondolom listánál se ez lenne a normális működés. Vmi tipp?

  • jetarko
    csendes tag

    Sziasztok!

    Nem rég kezdtem tanulgatni a Spring MVC-t és összedobtam pár kisebb weboldalt. Neten szinte minden példa JSP-s, de olvastam ,hogy elavult technológia ezért Velocity-t is használgattam, de ez se mai.
    Nézegettem, hogy van kismillió frontend technológia, de nem teljesen tisztázódott le bennem, hogy is működnek ezek és miket lehet együttesen működésre bírni. Ugye ezek template engine-ek html+css+js-sel.
    Ahogy láttam a GWT és Vaadin-ba a nézetet java-ba lehet írni, de ezt a generálos dolgot meg furának tartom, mert biztos megvan a limit meddig lehet eljutni vele, meg gondolom ez nem opció spring-gel. Mellesleg a swing-es gui-k összedobását se élveztem túlzottan.
    Mit javasoltok a primefaces, backbone,bootstrap,angular.js stb közül ami passzol a spring-hez és kevésbé vannak korlátai. Az idő amíg megtanulni tart kevésbé fontos,inkább a lényeg, hogy hosszabb távon tudjam használni. Majd kb félév múlva kéne elkezdeni írnom a szakdogát és gondoltam addigra belejövök. Vagy maradjak velocitynél és gyúrjak rá a html/css/js/jquery kombóra? Olvastam, hogy volt hasonló kérdés nem rég, de nem Spring specifikus volt.

Új hozzászólás Aktív témák

Hirdetés