- Fórumok
- Szoftverfejlesztés
- Java programozás
- (kiemelt téma)
-
Fórumok
PROHARDVER! - hardver fórumok
Notebookok TV & Audió Digitális fényképezés Alaplapok, chipsetek, memóriák Processzorok, tuning Hűtés, házak, tápok, modding Videokártyák Monitorok Adattárolás Multimédia, életmód, 3D nyomtatás Tabletek, E-bookok Nyomtatók, szkennerek PC, mini PC, barebone, szerver Beviteli eszközök Egyéb hardverek PROHARDVER! BlogokMobilarena - mobil fórumok
Okostelefonok Mobiltelefonok Okosórák Autó+mobil Üzlet és Szolgáltatások Mobilalkalmazások Tartozékok, egyebek Mobilarena blogokIT café - infotech fórumok
Infotech Hálózat, szolgáltatók OS, alkalmazások SzoftverfejlesztésGAMEPOD - játék fórumok
PC játékok Konzol játékok MobiljátékokLOGOUT - lépj ki, lépj be!
LOGOUT reakciók Monologoszféra FototrendFÁRADT GŐZ - közösségi tér szinte bármiről
Tudomány, oktatás Sport, életmód, utazás, egészség Kultúra, művészet, média Gazdaság, jog Technika, hobbi, otthon Társadalom, közélet Egyéb Lokál PROHARDVER! interaktív
Új hozzászólás Aktív témák
-
#39560925
törölt tag
-
#39560925
törölt tag
ez most komoly?Java UDP-ben a nem lehet pont akkora byte tömböt kapni, mint amekkora maga az UDP adatcsomag? Mindenképpen egy inicializált DatagramPacket ojjektum kell hozzá?
Miért nem tud egyszerűen visszatérni a datagramsocket.receive() egy beérkezett adatcsomagtól függő méretű byte tömbbel? Csak utólag lehet vagdosni? Ez így valami eszméletlen gagyinak tűnik.Ezen én is csodálkoztam, de biztos megvan a magyarázata.
-
#39560925
törölt tag
Össze kell dobnom egy futtatható JAR-t aminek a fele azonos könyvtárban lévő fájlokkal kell foglalkoznia.
Az aktuális könyvtár lekérdezését megtaláltam. Viszont két okból problémás ez nekem. 1. Nincs szükségem a teljes útvonalra. Igazából elég lenne ha valami relatív módon tudnék hivatkozni ezekre a fájlokra.
2. Windows és Unix környezetben egyaránt esélyes lehet a futtatás. Ilyenkor a / illetve a \ jeleket, hogyan tudom normálisan kezelni?Ahonnan elindítod a JAR-t, az lesz a working directory, és onnan minden fájlt elérsz relatív úttal megadva. / jelek kezelésére meg File.separator.
-
#39560925
törölt tag
-
#39560925
törölt tag
Sziasztok!
Teljesen kezdőként az alapoktól egyenlőre hobbiból szeretnék java, vagy C++ programozást tanulni.
Azt szeretném kérdezni, hogy milyen könyveket, neten elérhető anyagokat ajánlanátok az első lépések megtételéhez?
A választ előre is köszönöm!
BUÉK -
#39560925
törölt tag
Ha TDD-ben fejlesztesz, tényleg nem sokat kell debugolni.
A másik témában én is Sk8erPeterrel értek egyet. Ennyire ne legyünk már lusták használni a ctrl + alt + f, vagy ctrl + alt + v - t.
-
#39560925
törölt tag
Létezik az, hogy a VM memóriát pucol, betölt, lefordít, becache-el dolgokat, de az elméletileg első futtatáskor megtörténik. Ez a jelenség más infrastruktúrán is jelentkezik.
Azt viszont a teljesítményteszteknél érdemes megjegyezni, hogy mindig lesznek kiugróan rossz, vagy jó eredmények, ami nem igazán tükrözi a normál körülményeket. Használnak emiatt sokféle statisztikai mutatót, de nekem eddig a legjobban a medián jött be, az egyszerű átlagolás könnyen elvisz a málnásba.
Ja és természetesen lehetőleg kellően sok futtatás kell ahhoz, hogy valós képet kapjál. Ha az elsőt mondjuk eldobod, után mondjuk 10 mérés már sok esetben elég tud lenni.
+ JIT van és futás közben optimalizál
-
#39560925
törölt tag
A kérdés szempontjából van jelentősége?

nincs, de érdeklődöm. habár el se olvastam rendesen a kérdését, utólag elolvasva tényleg felesleg volt feltennem.
-
#39560925
törölt tag
Sziasztok!
Szerintetek melyik konstrukciót célszerűbb használni?
Pl. olvashatóság, performancia szempontjából.Map<Object, List<Object>> objects = new HashMap<Object, List<Object>>();
List<Object> temp = new ArrayList<Object>();
temp.add(actualValueObject);
objects.put(actualKeyObject, temp);vagy:
Map<Object, List<Object>> objects = new HashMap<Object, List<Object>>();
objects.put(actualKeyObject, new ArrayList<Object>());
objects.getKey(actualKeyObject).add(actualValueObject);Előre is köszi,
PetiMiért Object-eket tárolsz?
-
#39560925
törölt tag
Nem ugyanaz a téma. Az 1.7-es javaval ugyanolyan jól lehet dolgozni felteszem, mint az 1.8-al. Hogy az oracle nyugdíjazta? Tudjuk miért. Ettől openjdk formában él és virul.
Dehogynem ugyanaz a téma. Bambano új projektet kezd, és erre öntökönrúgás nem Java 8-at használni.
"Az 1.7-es javaval ugyanolyan jól lehet dolgozni felteszem, mint az 1.8-al."
Ez pedig nem igaz, hisz nincsenek funkcionális elemek az 1.7-ben.
-
#39560925
törölt tag
Egyébként az Oracle szerint is, ugyanis 2015. április óta nincs supportja, hacsak nem köt külön szerződést az ember a céggel.
A Tomcat 7-et is felesleges archaizálásnak érzem, mondjuk nem is állnék neki kézzel Tomcatet telepíteni, amióta van Spring Boot.
ezzel csak egyet tudok érteni.
-
#39560925
törölt tag
Én sem értem a kérdőjeleket. 7-es Java jobban tetszett volna ?
Egyébként meg azt írtam, hogy minimum.szerintem 1.8 kéne legyen a minimum minden új projektnél.
-
#39560925
törölt tag
Nos a tervezett rendszer mélyebb ismerete nélkül.
- Java 1.7 minimum
- Tomcat 7
- Spring Framework (Security, MVC)
- Ha kell ORM, akkor Hibernate
- Kliens oldalon JQuery a dinamikus formkezelés miatt. A JQuery ELVILEG! böngészőfüggetlen.Elsőre ezekből létre lehet hozni egy aránylag könnyűsúlyú cuccot.
1.7????
-
#39560925
törölt tag
summon Sk8erPeter
![;]](//cdn.rios.hu/dl/s/v1.gif)
-
#39560925
törölt tag
-
#39560925
törölt tag
-
#39560925
törölt tag
Pontosan ezért kéne Kotlint használni, várok szeretettel mindenkit a Kotlin topikban. 100% interoperable a Java-val, úgyhogy bármikor el lehet kezdeni szép lassan migrálni a projektet.
-
#39560925
törölt tag
Látom senki nem írta le normálisan külön posztban a végső megoldást.
Amúgy majdnem következetesen írtad a components szót componenets-nek. ![;]](//cdn.rios.hu/dl/s/v1.gif)
(#7837) Oppenheimer: me' mé', mit tud? Nem láttam még.

szép a színe

-
#39560925
törölt tag
15-ös Idea loading screenje megb*sz.

-
#39560925
törölt tag
Pont tegnap kezdtem én is használni, mert a sima Collenctions.synchronizedList() iterátora is ConcurrentModificationException-öket dobált.
Amire figyelj, hogy a CopyOnWriteArrayList-et nem lehet Collections.sort-tal rendezni: "Element-changing operations on iterators themselves (remove, set, and add) are not supported. These methods throw UnsupportedOperationException."Ezen kívül rossz tapasztalatom egyelőre nincs vele. Nálam ezért volt indokolt a használata: "useful when you cannot or don't want to synchronize traversals, yet need to preclude interference among concurrent threads"
-
#39560925
törölt tag
Nem világos számodra, mi az a referencia szerinti átadás. Az C++ban van például, vagy a C# out és ref paraméterek ilyenek. Ha lenne teferencia szerinti átadás, akkor tudnal swap funkciot implementalni, de nem tudsz. (probalj meg atadni egy referenciat referencia szerint Javaban, nem lehet)
Mi az a swap funkció? C++-osan erre gondolsz?
Object a ( ... ); ---> a-t printelne
Object b ( ... ); ---> b-t printelne
swap(a, b);
a ---> b-t printelne
b ---> a-t printelnevoid swap(Object &a, Object &b) {
Object temp = a;
a = b;
b = temp;
} -
#39560925
törölt tag
-
#39560925
törölt tag
Először is: Javaban mindig érték szerinti átadás van. Ez azt jelenti, hogy amikor myArrList.addAll meghívódik, akkor a yourArrList-ben tárolt referenciák lemásolódnak.
yourArrList elemei: a "three" és "four" stringek. addAll meghívása után mindkét listában van 1-1 referencia ezekre a stringekre.
Ha az egyik listában kitörlöd a referenciát, az a másik listára természetesen nem lesz hatással. Ha viszont a referencián keresztül megváltoztatod objektum állapotát, akkor az a másik listából elérve is látszódni fog. A példa ott sántít, hogy a String immutable.

-
#39560925
törölt tag
a requests/second értékek közötti kétszeres különbség akkor is meglenne, ha nem HelloWorld, hanem komplex appot futtatnának, üzleti logikával és adatbázisréteggel?
-
#39560925
törölt tag
Fogalmam nincs, legalább öt éve nem nyúltam NetBeanshez, és nem is tervezek ezen változtatni. Én mondjuk Spring Bootot szoktam mostanában használni, beágyazott Undertowval (de a default Tomcat is bőven elég lehet, vagy Jettyre átállni is csak pár sor a pom.xml-ben); semmi EE-s hókuszpókusz.
Undertow miben jobb, mint a Tomcat?
-
#39560925
törölt tag
Tudom. A társai alatt a JetBrains termékeket értettem, ha félreérthető volt.
Oppenheimer: Jogos. Mondjuk az egyetemeken mindenhol (itthon) SWT-t tanítanak, mi is. Nem túl elterjedt cucc a JavaFX.
De szakdolgozat, nálunk ott az embernek van beleszólása a választott technológiákba.
-
#39560925
törölt tag
IntelliJ IDEA és társai pl. abban van írva.

JavaFX akkor is korszerűbb lenne.
-
#39560925
törölt tag
Ez egy szakdolgozati feladat. S arról van szó, hogy elkészítettünk egy Swing alkalmazást vagyis még csak a vázát, és az adatokat adatbázisból szeretnénk mögé tolni. Egy távoli szerveren levő adatbázisból. Így ezen törjük a fejünket, hogy hogyan lehetne megoldani, egyszerűen. Netbeans-el csináljuk és állítólag abban van beépített Glassfish support és úgy egyszerűbb, állítólag...

És miért Swing?
Sehol nem használnak Swinget a való világban. -
#39560925
törölt tag
-
#39560925
törölt tag
-
#39560925
törölt tag
-
#39560925
törölt tag
-
#39560925
törölt tag
Utánaolvasgatás és benchmarkok nézegetése után vontam le ezt a következtetést.
Egyébként Scalaval nagyon könnyű marha sok memóriát felzabálni sok rövid életű, kicsi objektummal, nem? Így is elég nagy memory overhead, hogy Java van Androidon.
-
#39560925
törölt tag
-
#39560925
törölt tag
Írhatnak, de kétlem, hogy megteszik. Nemrég váltották le a JVM alapú Dalvikot a szintén JVM alapú ART-vel. Ez utóbbi rengeteg idő, mire el fog terjedni, jelenleg kicsi az Android 5 felhasználóbázisa. Ha váltanának egy teljesen új architektúrára, akkor az új appok vagy csak az új telefonokon lesznek elérhetőek, vagy meg kell oldani, hogy a JVM alapú dolgokon is menjen, ami elég bonyolult. Plusz kérdésessé tenné az ART-be vetett meló szükségességét. Ezek kívül a teljes kialakult ökoszisztéma borulna (libek, eszközök).
Mellesleg amennyire tudom, nem terveznek váltani Javáról.Az átmenet nem menne egyik napról a másikra. Az új rendszereken a 2 runtime párhuzamosan elérhető lenne, mint ahogy iOS-re is lehet fejleszteni Objective-C-ben és Swiftben is. Aztán 5-10 év alatt a JVM runtime szépen kikopna. Tény, hogy csomó munkájuk az ART-vel kukába menne.
-
#39560925
törölt tag
Szerintem viszont ha váltanak, akkor egy JVM alapú nyelvre fognak. Persze Go-ra is lehet JVM fordítót írni, lehet van is már. De az előbbiekre általában egyszerűbb váltani Javáról (pl. Groovy-ra).
Mondjuk ez már megint OFF itt.

Groovy az nagyon lassú kódot eredményez, nem tudom, hogy mobilon jó ötlet lenne-e. Miért ne írhatnának új runtime-ot, amiben nem JVM van?
-
#39560925
törölt tag
cool, köszi!
de újraírni a meglévő kódot emiatt már nem fogom. -
#39560925
törölt tag
-
#39560925
törölt tag
-
#39560925
törölt tag
Jaja, szerintem is. Igaz, írják is, hogy a Java megeszi az Objective-C részét, és nem a Swift. Azért megemlíthették volna az Androidot. De egyébként én úgy látom, hogy valóban népszerű lett a Java 8, talán egy picit benne van azért.
Nem tudom, hogy a Java 8 mennyit nyomhat itt a latba, ezt lehetetlen számszerűsíteni. Hallottál olyanról, hogy valahol azért döntöttek Java mellett, mert a 8 olyan fasza? Amúgy nekem nagyon bejönnek a labdák meg a streams API.

Amúgy azt tudták, hogy a Jigsaw-os modularizáció rossz hatással lesz a teljesítményre?
-
#39560925
törölt tag
A CTRL+SPACE segítő sem rossz. Sok gépeléstől (és gondolkodástól) megkíméli az embert

persze, de az az IDE kezelésben még csak a level 1.

-
#39560925
törölt tag
szerintem programozásnál - ha eltekintünk a gondolkodással töltött időtől - az számít a legtöbbet, hogy mennyire ismeri valaki az IDE-t, és mennyi shortcutot használ.
-
#39560925
törölt tag
-
#39560925
törölt tag
-
#39560925
törölt tag
-
#39560925
törölt tag
-
#39560925
törölt tag
TomEE-val játszadozom, egész jó cucc. Persze a Spring Boot-nak közelében sincs, de kezdetnek jó. Spring fanboy lettem

-
#39560925
törölt tag
-
#39560925
törölt tag
Szerintetek egy 512MB RAM-os Ubuntun futni fog egy egyszerű Spring boot app és egy MySQL szerver?
-
#39560925
törölt tag
-
#39560925
törölt tag
-
#39560925
törölt tag
-
#39560925
törölt tag
Mi a legolcsóbb megoldása egy MySQL-t használó Spring bootos backend futtatásának nyilvános felhőben, vagy szerveren?
-
#39560925
törölt tag
Szánalom ez az egész...
a Java halott
-
#39560925
törölt tag
Wow, ez a Spring Boot és Spring Data JPA elég kényelmes. Hogy nem használtam önlabra...
-
#39560925
törölt tag
> Ez alapján annyira random a yield, hogy az is lehet hogy a1 blocked állapotba kerül (hisz másképp nem kerülhetne ütemezésre a1-a10 közül más, mert az a1 foglalja a monitort), de az is lehet, hogy nem változik semmi?
De, persze, sok volt a sor.
> Yielddel nem csak a1 és b1 közötti ütemezést lehetne befolyásolni?
De. Ha a1 running es b1 queued, es a1 yieldel, utana vagy a1, vagy b1 lesz running.
Mondjuk teny, hogy az elozo valasz ota meg 4 sort ittam, szoval ki tudja.
Ilyenkor kell nekiállni kódolni.

-
#39560925
törölt tag
A queued az, ami nem var semmilyen monitoron, csak preemptalva lett (vagy csak elinditottak, de meg nem kerult utemezesre).
A yield csak egy jelzes. Nincs definialva, hogy mi fog tortenni, siman lehet, hogy a yield utan ugyanaz a szal fut. Ha a1 nyom egy yield-et, akkor a1-a10 es b1-b10 szalak kozul valamelyik fog utemezesre kerulni. A queued ne tevesszen meg, nincs sorrendiseg ertelmezve a varakozo szalak kozott.
Ha a1 nyom egy yield-et, akkor a1-a10 es b1-b10 szalak kozul valamelyik fog utemezesre kerulni.
Ez alapján annyira random a yield, hogy az is lehet hogy a1 blocked állapotba kerül (hisz másképp nem kerülhetne ütemezésre a1-a10 közül más, mert az a1 foglalja a monitort), de az is lehet, hogy nem változik semmi?
A queued ne tevesszen meg, nincs sorrendiseg ertelmezve a varakozo szalak kozott.
Ez világos.
A queued az, ami nem var semmilyen monitoron, csak preemptalva lett (vagy csak elinditottak, de meg nem kerult utemezesre).
Csak a tisztánlátás végett: ha a példánkban a1 van az A objektum monitorában, és b1 a B monitorában, akkor a1 és b1 ami queued (vagy épp running, attól függ mi van beütemezve).
Yielddel nem csak a1 és b1 közötti ütemezést lehetne befolyásolni?
-
#39560925
törölt tag
alap threading kérdésem lenne...
A képen milyen állapot a queued? Ez alapján a yield csak jelzi, hogy hajlandó a szál feladni a futási jogát, és JVM dönt, hogy fut-e tovább.
TFH van 1 CPU mag, 1 A objektum amire szinkronizál 10 thread (a1 .. a10) és, 1 B objektum, amire szinkronizál másik 10 thread (b1 .. b10).
Az a1 .. a10 szálak között az ütemezés úgy zajlik, hogyha a1 szál lemond a futási jogáról, akkor (timed) waiting állapotba, és az A objektum monitor sorábol bekerül másik szál a monitorba, ami futhat.
Közben ettől függetlenül a működik a preemptív ütemezés a JVM-en (és alatta a host oprendszeren), és passzolgatja a futási jogot az A objektum monitorában és B objektum monitorában lévő szálak között.
Jól gondolom, hogyha a yield meghívódik, akkor az egy jelzés a JVM-nek, hogy az éppen futó a1 szál helyett beütemezheti a B objektum monitorában lévő b1 szálat, és nem fogja befolyásolni azt, hogy az A objektum monitorában és monitor sorában kik állnak?
-
#39560925
törölt tag
A Movies alatt a Page Size állítása a Most kulcsszóra működik, de gondolom nem így tervezted. Valamiért nekem villog össze vissza, meg ilyenek.Elég furcsa, amúgy egy kis margin-t tehetnél. Most így hirtelen ennyi.
Szerk.: Ja meg ha a show details-re kattintunk akkor felmehetne a detail-sra, mert vártam, hogy majd ott lenyílik valami aztán jöttem rá, hogy feljebb kell menni hozzá.
"Valamiért nekem villog össze vissza"
Igen, az animáció akkor is be van kapcsolva és lassabb az animáció (50ms), mint ahogy húzogatod a csúszkát. Akkor is animál ha gépelsz, de annyira gyorsan kevesen írnak hogy azt ne tudja követni az animáció. Csúszkánál kiviszem majd.
Tudom, hogy nem igényes a design, de mint írtam a frontend teljesen újra lesz írva Angularban, így ezekkel már nem foglalkozok. Inkább olyan funkcionalitásbeli ötleteket vártam, mint social login, ismerőseid tevékenységeinek mutatása (megnézett, értékelt, listára rakott egy filmet) egy timelineon és hasonlók.
-
#39560925
törölt tag
Itt van a kis béna webapp ami miatt annyit kérdeztem mostanság.

Ha elmenne a netem, azért nem vállalok felelősséget.Frontend egy összegányolt single page app, sima html + jquery kombóval, azt majd újraírom angularral. A kinézetet ötévesek tervezték.
Regisztrációs felület még nincs, ezért csináltam a topiknak egy usert:
user: JavaHurkák
pwd: password3 hónappal ezelőtti IMDB adatbázisból dolgozik (akkor töltöttem le).
Elsősorban azért raktam be ide, hogy aki tud, az írhatna ötleteket új funkciókhoz.
-
#39560925
törölt tag
-
#39560925
törölt tag
Ja, a python is elég jó kezdésnek. Vagy ruby

Amúgy pascalban is ott vannak a pointerek, de nem muszáj egyiknél sem használni, mint ahogy C-ben sem a malloc-cal kezd az ember.
(#7447) Oppenheimer kicsit feleslegesnek érzem az alacsony szintű dolgokat kezdésképpen. Egyből elmenne a kedve a kezdőnek mindentől. Kell valami, aminél kis ráfordítással látványos eredeményeket lehet elérni. Ezért is használták régen a BASIC-et assembly helyett

az igaz, hogy így nehezebb a kezdés, de Python után meg nem sok ember kezdene el önszántából céklázni

-
#39560925
törölt tag
"Pascal-t és C-t elkezdeni elég könnyű"
A Pascalt igen. A C-t maximum ugy, hogy az ember a kod felet nem erti, mert ott pillanatok alatt megjelennek pointerek meg hasonlok.
Elso nyelvnek szerintem talan a Python a legalkalmasabb: valoban hasznalt, praktikus jelentoseggel is rendelkezik, lehet interaktiv interpreteres modban futtatni, tud egy csomo mindent, viszont azokat nem kotelezo hasznalni: egy egyszeru hello worldot egy sorban le lehet rendezni.
nem kell egyből pointerekkel kezdeni C-ben, mint ahogy Pythonban sem REST klienst fognak írni első órán. szerintem jó ha valaki a programozást egy alacsonyabb szintű nyelven kezdi, jobban tisztában lesz az alatta lévő vassal.
-
#39560925
törölt tag
-
#39560925
törölt tag
Teljesen irreleváns, hogy a következő projekt nyelve mi. Olyanokat keress, akik már csináltak vele nagyobb projektet. Szerintem. A többféle paradigma megtanulasara nem jo, mert mindenből van benne egy kicsi. Funkcprogra jobb a Clojure (vagy racket vagy akarmi) meg a Haskell.
Tényleg nem muszáj nekem elhinni, de hidd el :d
Erre még visszatérünk júniusban.

-
#39560925
törölt tag
Nézd meg, hogy a nagy rendszereket gyártó cégek, akik Scalaztak, hogy állnak vissza Javára vagy valami másra. A Scala problémája az, hogy őrült bonyolult lett a nyelv. Fun megtanulni, es amikor használod, akkor nagyon produktívnak érzed magad. A probléma ott jön, amikor pár főnél nagyobb csapat kezd el dolgozni, és mindenkinek más rész tetszik a Scalabol.
Nekem bejott a Scala, de amikor elkezdtem nézegetni a Scalaz-t meg társait, akkor ezt láttam. Aztán miután hagytam, kezdtek jönni az iparbol is a hírek, hasonló tapasztalatokról. (sok publikus hír is van, de privátban nem publikusbol is van pár sztorim)A Scala a JVM C++-a. Read this.
Egyébként a Clj számomra nagyobb revelacio volt, de persze ízlés dolga..
A productivity és a több paradigma miatt akarom megtanulni. Olvastam ellenvéleményeket, pont azokat a hátrányokat írták, amit te. Igaz olyat nem hallottam, hogy scalaról visszamentek javara, viszont csomó beszámolót olvastam a neten, hogy miért választották a scalat a következő projektünk nyelvének. [link] [link]
-
#39560925
törölt tag
-
#39560925
törölt tag
Mivel nincs scala topik, itt teszem fel a kérdést: mi a legjobb oktatóanyag a neten?
-
#39560925
törölt tag
A servletekről pontosan mit? Biztos, hogy a megfelelő juniorokat vették fel?
![;]](//cdn.rios.hu/dl/s/v1.gif)
-
#39560925
törölt tag
NetBeans alatt olyat hol tudok csinálni, hogy a program automatikusan enterezzen és rendezze a sorok bekezdéseit? Az a helyzet, hogy egy try-catch kimaradt, és emiatt mind az 1000 sort beljebb kéne ütnöm egyesével pár szóközzel. Ilyet tudna magától is csinálni a NetBeans?
kijelölöd a sorokat és nyomsz egy tab-ot
-
#39560925
törölt tag
-
#39560925
törölt 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?
-
#39560925
törölt tag
A label már durva, de egy breakkel semmi baj. Nyilván célszerűbb valami do while vagy while szerkezetet felépíteni, ha az ember ki akar idő előtt lépni, de szerintem a for loop-ban elkövetett breakkel sincs semmi baj. Ha az ember módjával használja. Persze háromezer if the else és switch szerkezetekben 678 break nem szép....
Durvának hangzik, mert leírva, hogy label, az ember az assemblyre asszociál, de sima for-ból kiugrásra is oda lehet tenni, hogy még egyértelműbb legyen az amúgy is triviális ciklustörés, amikor valaki ránéz.
-
#39560925
törölt tag
Mi a baj a break-kel úgy általában? Már a for loop kapcsán...

szerintem is inkább egy break, mint még 1 feltétel a ciklusfejlécben. főleg, hogy javában lehet labelt tenni, úgy pláne nem olvashatatlan szerintem.
-
#39560925
törölt tag
lyaly
Itt azért elkövettél pár olyan dolgot, amivel alá lehet vágni egy kitervelt rendszernek. Egyrészt - bár ismétlem magam - ez a generált kód... szerintem jobban jársz, ha egy kicsit veszed a fáradtságot, és megtanulod magad legyártani a kódot a táblák alapján, vagy fordítva.Ha már generáltál valamit adatbázis valami alapján, akkor nagyon észnél kell lenni, hogy mibe túrsz bele. Itt épp azzal babráltál, amivel nem kéne. Mellesleg nekem amiatt gyanús a metódusra akasztott annotációval, mert olyan, mintha félig, vagy egyáltalán nem értené, hogy máshogy akarod elnevezni. Ha már annotálod a cuccot, akkor az átláthatóságot is növeli, ha a mezőkre aggatod őket.
Az@Id mellé még odatenném a @GeneratedValue-t is, mert ezzel a legtöbb adatbázisnál tud auto increment-es típust használni.
Értem az összes annotáció jelentését, de ennyit kézzel írni... hát nem volt sok kedvem. 5 perc alatt generálni azt 800 sornyi kódot a model packagebe azért jóval hatékonyabb megoldás. Generálás után meg beleszerkesztettem úgyis mindbe, hogy nekem megfelelően működjön.
Nos igen, a @GeneratedValue kelleni fog.
-
#39560925
törölt tag
Egyébként az MpaaRatings-zel ugyan ezt csinálja. Ott is nem létező, id oszlopot keres az adatbázisban. Ezekről tudni kell, hogy én nyomtam alter table-t utólag a táblákon, hogy legyen elsődleges kulcs bennük. Pl:
alter table movietime2.movies2actors add m2aid int primary key auto_increment;Ez azóta is jó egyébként, a movies2actors kapcsolótáblát boldogan tudom használni.
Ha explicit megadom az MpaaRatingsEntity-hez, hogy mi a join table és mik a join columnok, akkor se jó:
@JoinTable(name = "mpaaratings", catalog = "movietime2", schema = "",
joinColumns = @JoinColumn(name = "movieid", referencedColumnName = "movieid", nullable = false),
inverseJoinColumns = @JoinColumn(name = "mpaaratingsId", referencedColumnName = "mpaaratingsId", nullable = false))"Missing column: mpaaratings_id in movietime2.mpaaratings"
Fogtam az adatbázist és toltam rá alter tablet, átneveztem az oszlopot arra, amit a hibernate annyira használni akart, és már jó. Megoldást nem találtam, mindenesetre nagyon furcsa.
-
#39560925
törölt tag
"Nekem a hibaüzenetből eleve az gyanús, hogy a táblában más néven keresi az ID-t, mint ahogy deklaráltad volna."
Ok, de mire gyanakszol?
Miért "ahogy deklaráltad volna"? Nem volna, hanem így van deklarálva: genreId. Meg is van adva neki, hogy így keresse.
"A helyedben én az @Id és @Column annotációkat nem a metódusokra tenném."
Nem én tettem, az Idea volt. Tökéletesen működik minden, ha kiveszem a GenresEntity osztályt."Az meg a másik, hogy ha csak nem muszáj, én nem babrálnám a hibernate saját elnevezési stratégiáját."
Ezt kifejtenéd kérlek bővebben? Mire gondolsz?
Ha az entitások és az attribútimaik neveire gondolsz, akkor azok 2 okból alakultak így:
1) adatbázisban a nevek
2) Ideában a Generate persistence mapping by database schema wizardbólEgyébként az MpaaRatings-zel ugyan ezt csinálja. Ott is nem létező, id oszlopot keres az adatbázisban. Ezekről tudni kell, hogy én nyomtam alter table-t utólag a táblákon, hogy legyen elsődleges kulcs bennük. Pl:
alter table movietime2.movies2actors add m2aid int primary key auto_increment;Ez azóta is jó egyébként, a movies2actors kapcsolótáblát boldogan tudom használni.
Ha explicit megadom az MpaaRatingsEntity-hez, hogy mi a join table és mik a join columnok, akkor se jó:
@JoinTable(name = "mpaaratings", catalog = "movietime2", schema = "",
joinColumns = @JoinColumn(name = "movieid", referencedColumnName = "movieid", nullable = false),
inverseJoinColumns = @JoinColumn(name = "mpaaratingsId", referencedColumnName = "mpaaratingsId", nullable = false))"Missing column: mpaaratings_id in movietime2.mpaaratings"
-
#39560925
törölt tag
Nekem a hibaüzenetből eleve az gyanús, hogy a táblában más néven keresi az ID-t, mint ahogy deklaráltad volna. A helyedben én az @Id és @Column annotációkat nem a metódusokra tenném.
Az meg a másik, hogy ha csak nem muszáj, én nem babrálnám a hibernate saját elnevezési stratégiáját.
Az org.hibernate.cfg.DefaultComponentSafeNamingStrategy nekem eddig minden problémámat megoldotta"Nekem a hibaüzenetből eleve az gyanús, hogy a táblában más néven keresi az ID-t, mint ahogy deklaráltad volna."
Ok, de mire gyanakszol?
Miért "ahogy deklaráltad volna"? Nem volna, hanem így van deklarálva: genreId. Meg is van adva neki, hogy így keresse.
"A helyedben én az @Id és @Column annotációkat nem a metódusokra tenném."
Nem én tettem, az Idea volt. Tökéletesen működik minden, ha kiveszem a GenresEntity osztályt."Az meg a másik, hogy ha csak nem muszáj, én nem babrálnám a hibernate saját elnevezési stratégiáját."
Ezt kifejtenéd kérlek bővebben? Mire gondolsz?
Ha az entitások és az attribútimaik neveire gondolsz, akkor azok 2 okból alakultak így:
1) adatbázisban a nevek
2) Ideában a Generate persistence mapping by database schema wizardból -
#39560925
törölt tag
Intellij Idea tette bele a generálás során. Ezen én is gondolkodtam, de mivel nem fogok hozzájuk nyúlni, egyelőre nem akartam bántani őket.
"MoviesEntity -ben hol a characters mappelése?"
Látod, a hsz-ben, de itt van mégegyszer:
@OneToMany(mappedBy = "movie")
public List<Movies2ActorsEntity> getCharacters() {
return characters;
} -
#39560925
törölt tag
Először is itt egy működő példa |Movies2Actors| *----1 |Movies|:
MoviesEntity class:
@JsonIgnore
private List<Movies2ActorsEntity> characters;
@JsonIgnore
private List<GenresEntity> genres;
...
@OneToMany(mappedBy = "movie")
public List<Movies2ActorsEntity> getCharacters() {
return characters;
}
@OneToMany(mappedBy = "movie")
public List<GenresEntity> getGenres() {
return genres;
}Movies2ActorsEntity class:
private int m2aid;
private int movieid;
private int actorid;
private String asCharacter;
private ActorsEntity actor;
private MoviesEntity movie;
...
@Id
@Column(name = "m2aid", nullable = false, insertable = true, updatable = true)
public int getM2aid() { return m2aid; }
@ManyToOne
@JoinColumn(name = "movieid", referencedColumnName = "movieid", nullable = false)
public MoviesEntity getMovie() {
return movie;
}És akkor a |Genres| *----1 |Movies|
GenresEntity:
private int movieid;
private String genre;
private int genreId;
@JsonIgnore
private MoviesEntity movie;
...
@Id
@Column(name = "genreId", nullable = false, insertable = true, updatable = true)
public int getGenreId() {
return genreId;
}
@ManyToOne
@JoinColumn(name = "movieid", referencedColumnName = "movieid", nullable = false)
public MoviesEntity getMovie() {
return movie;
} -
#39560925
törölt tag
De, persze, ezt a MoviesEntity-vel joinolom. Azóta az is belekerült az SO kérdésbe. De a kérdés inkább az, hogy a hibernate honnan szedi ezt a genre_id-t, amikor elvileg helyesen fel van annotálva, hogy genreId van az adatbázisban. MoviesEntity és Movies2ActorsEntity között ugyan ilyen OneToMany kapcsolat van és működik, ahhoz képest semmit sem csináltam másképp.
-
#39560925
törölt tag
-
#39560925
törölt tag
A JSON generálásra céloztam. És így van, ha adatokat adsz-veszel, akkor több kommunikációval jár, ami hálózati probléma lehet.
Másik oldalról viszont ott van a fejlesztés és karbantartás. A Java legnagyobb előnye az előtte lévő nyelvekkel/rendszerekkel szemben, hogy gyorsan tudsz eredményt produkálni, pláne ha ilyen irgalmatlan nagy ökoszisztéma jár vele. Ha lábon lövöd magad egy olyan implementációval, amivel időt veszítesz, és rugalmatlanná teszed az alkalmazásodat, és mindezt a hálózati forgalom miatt aggódva, akkor pont a Java előnyeit áldozod be. Néha erre szükség van, amikor nagyon kritikus a teljesítmény egy adott vason, de nem minden áron.
Tegyük fel, hogy a kommunikáció régebbi MVC-szerű alapokra épül. Oldalak jönnek le sokszor feleslegesen, mire a teljes adatkészletet megkapod. Ha már valami ajaxos megoldást is használsz, akkor az overhead sokkal kisebb lesz; akkor bukik ki a leginkább, amikor egy eseményre több kérést kell lezavarnod. A teljesítmény a hálózat teljesítőképességén, és a protokollon is múlik. Ha viszont már websocket/STOMP klienst használsz, akkor megint eltűnik az overheadből egy elég nagy rész, mert a kapcsolat felépítésének a költsége nem terheli a további requesteket; gyakorlatilag eljutsz odáig, mintha egy ESB/JMS integrációs megoldást használnál, aminek a másik végén egy repository jellegű szolgáltatás ül.
Szóval ha engem kérdezel, csak magadat szívatod meg a DTO-kkal.
Megkérdezem a konzulensem erről, hogy legyenek-e wrapper osztályok, vagy külön rest hívásban jöjjenek-e le a kapcsolatok.
-
#39560925
törölt tag
Persze értem a csomagolás hátrányát is, de szerintem kisebb, mint a másiknak.
-
#39560925
törölt tag
Ez sztem akkor lenne baj, ha az objektumok duplikálódnának. De azok nem, csak a referencia szerepel kétszer, melyek közül az egyik parszolódik. Irtó kényelmetlen és indokolatlan lenne az ORM lényegi részét kézzel csinálni emiatt...
-
#39560925
törölt tag
Az alapvető probléma az, hogy két helyen kell ugyanazt karbantartani. Amíg csak néhány entitásról van szó, oké, de amikor elkezd növekedni a számuk, és elkezdenek ezek változni is, akkor születnek újabb bogárkák.

Mert például valaki elfelejtette átvezetni a módosítását a másik osztályba, elfelejtődik, és később jönnek a hibák.
Röviden: a duplikált kód rossz.Ez persze nem jelenti azt, ne lehetnél vele boldog, csak érdemes jobb megoldás után kutatni.
Láttam olyan helyet, ahol ennek a menedzselésére bevezették a kódgenerálást. Ott aztán már durva állapotok vannak, ha az ember ilyesmire kényszerül. Egy xtend leíróban legózhatod össze a java forráskódot töredékekből, ezzel többféle forrást is generálhatsz, amit majd a compiler fordít, stbstb. Így xtend-ben kell egyszer megírni a cuccot és az akár 20 féle DTO-t is kigenerál neked. Vagy amennyit akarsz. Tiszta káosz. Cserébe viszont az xtend nehezebben olvasható. Vagy lehet, hogy csak szokni kell. Szerencsére nem sokáig kellett gyönyörködnöm benne.
Alvás helyett gondolkodtam floatr hozzászólásán. Biztos, hogy JSON serialization-ről beszélt. Ha a kapcsolatokra teszek @JsonIgnore-t, akkor amikor csak alap információk kellenek az entitásokról, jól fog működni parszolás. Amikor pedig egy nagy objektumot küldenék, pl Movie, és benne minden kapcsolódó adattal, akkor ilyen esetekre definiálnék wrapper osztályt, és benne lenne minden szükséges adat egy mezőként.
Pl:
public class MovieWrapper {
private MoviesEntity movie;
private ArrayList<ActorsEntity> actors;
private ArrayList<WritersEntity> writers;
// többi kapcsolat
...
// getterek, setterek
}Ezt az objektumot gyönyörűen meg tudom konstruálni a business logic layerben, amikor még van hibernate sessionöm, és így nincs konverzió, kódduplikáció, csak 1 kis extra karbantartás.
Kérdés: Jackson tudni fogja ezt parszolni? Most nem tudom kipróbálni, mert már aludni akarok, és mobilról írtam.

-
#39560925
törölt tag
Jobban belegondolva a google is szereti halmozni a rest hívásokat. Jó, persze mögötte ott egy bazinagy elosztott rendszer.
Pl. gmail:
Listás nézetben csak az első x db mail látszik (sender, subject és esetleg a body eleje). Nem fogja lehúzni az összes email összes tartalmát. Sőt egy conversationbe belépve sem tölt le mindent, csak az elsőt meg az utolsót. Ha akarod olvasni a többit majd kattintasz és lehúzza azokat is.
Ez soksok apró hívás, mindig csak a legszükségesebbet letöltve. Így fenn tudja tartani a látszatot, hogy ő milyen gyors. Szóval lehet ezt hatékonyan csinálni, csak meg kell találni az egyensúlyt.
Megjegyzem, a konvertálgatást csak utolsó mentsvárként javasoltam.
De ezzel a konvertálással most nagyon egyszerűen tudok küldeni azt amit akarok.
-
#39560925
törölt tag
Alternatív megoldásként az entitások xstream annotációkkal ellátása jöhet szóba még. Lightweight és köthető entitásra vagy akár DTO-ra, Bean-re vagy akármire
Függően attól, hogy okoz-e hidegrázást a DTO konverzió, mégha automatikus is 
Már megírtam a DTO konverziót, nagyon szép lett.
Ezt azért elrakom könyvjelzőkbe, hátha kell még. -
#39560925
törölt tag
-
#39560925
törölt tag
Legjobban akkor jöttem ki hasonló dolgokból, amikor az efféle collection-öket letiltottam a serialization-ből, és külön húztam le, amikor szükség volt rá. Ha egyből használnád is, ahogy ez nem éppen a legoptimálisabb, akkor is lehet callback/promise lánccal hívogatni a service-eket. Nekem ettől a DTO-s konvertálgatástól hidegrázásom van...
"az efféle collection-öket letiltottam a serialization-ből, és külön húztam le, amikor szükség volt rá"
Ezalatt pontosan mit értesz és hogyan?
Ha letiltom őket, és mindig külön rest hívás lenne betölteni mindent, az nagyon nagy overhead lenne.
-
#39560925
törölt tag
Ha más lehetőség nincs a copy-paste mindig segít.

MovieEntity a JPA-nak, MovieRepresentation a JSON parsernek, és a kettő közé egy finom konverter, ami egyikből másikat csinál. A két eszköz nem fog egymásnak bekavarni, a konverterben meg célzottan meg tudod adni, miből mikor mit csináljon.Ahh, ez lesz a megoldás.
Akkor ezzel zárom a napot, holnap folytköv. Köszi a segítséget mindenkinek! -
#39560925
törölt tag
Lehet kezdek rájönni. Ignorálni kéne alapból minden kapcsolatot, és kézzel intézni őket.
hmm... de ha @JsonIgnore-t rakok rájuk, akkor sehogy sem tudom majd serializálni őket JSON-ba.
Minden bizonnyal az van amit írsz, de nekem nem világos miért akarja a Jackson bejárni az egész adatbázisomat.
Ha sikerülne neki, alsó hangon 8 gigás lenne a HTTP response bodyja.Ez így nagyon nem pálya, 1 weboldal betöltéséhez n*100 http üzenetváltás kéne. Tanácstalanná váltam

-
#39560925
törölt tag
Lehet kezdek rájönni. Ignorálni kéne alapból minden kapcsolatot, és kézzel intézni őket.
hmm... de ha @JsonIgnore-t rakok rájuk, akkor sehogy sem tudom majd serializálni őket JSON-ba.
Minden bizonnyal az van amit írsz, de nekem nem világos miért akarja a Jackson bejárni az egész adatbázisomat.
Ha sikerülne neki, alsó hangon 8 gigás lenne a HTTP response bodyja. -
#39560925
törölt tag
Többnyire gúglit nézek, aztán onnan mindenfelé vezetnek utaim, többek között a hibernate doksihoz is.
Nekem az 1-es megoldás tetszik a legjobban, és ha nem jön be, akkor megnézem a többivel. A gond lehet, hogy valójában nem is itt van, hanem a JSON parserrel, de ez még kiderül, mindenesetre most nőtt annyival a tudásom, hogy jó ideig ellegyek vele.

Egyébként több helyen is olvastam, hogy a hibernatenek tudnia kéne kezelni eager fetchelés közben az ilyen ciklikus, 2 irányú many-to-many kapcsolatokat, de úgy látszik a gyakorlatban még sincs így.
(#7191) emvy: Hmm, logikusan tűnik.
Ez nem fog működni, baja van a Jacksonnak.
Pl filmeknél direkt gettelek minden színészt, írót és producert, mégse hajlandó létrehozni belőle a json objektumot:
Could not write content: failed to lazily initialize a collection of role: com.movietime.model.MoviesEntity.actors, could not initialize proxy - no Session (through reference chain: com.movietime.model.MoviesEntity.
Nem tudom minek akar itt proxyzni, amikor be vannak töltve neki a dolgok, és megfelelően annotálva vannak az entitások is, pl MoviesEntity:
@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "movieid")Ez csak az egyik baj, a másik az, ha csak listázni akarok filmeket, akkor fölösleges betölteni minden filmhez minden adatot, elég csak a címet, rendezőt és mondjuk két színész nevét kiírni a listában. A többit akkor kéne csak lekérdezni az adatbázisból, ha rákattint valamelyikre a felhasználó. Ha sikerülne is rávenni a Jacksont, hogy legalább akkor csinálja a dolgát, amikor minden információ megvan hozzá, ez a funkció még akkor se működne.
-
#39560925
törölt tag
Kicsit későn lövöm el a hsz-t, feltartottak. Talán ad ötletet.
--------
Szerintem fixen belőtt annotációkkal nem fog menni, mivel nem egyértelmű, hogy melyik fetch módot kell alkalmazni.
Alap, hogy minden lazy. Mivel csak a REST hívás beérkezésekor tudod eldönteni, hogy adott esetben melyik kapcsolatot kell eager fetchelni, nincs mese, runtime ott helyben kell megmondanod neki.Erre sokféle módszer létezik, hogy melyik szép, azt nem tudom.
1. Ha a user a filmre kíváncsi, előkeresed a filmet, majd ráhívsz a getActors() metódusra (ez úgy tudom meglöki a proxy-t és ha sessionben vagy, akkor feltölti az actorokkal is).
2. Talán named query használatával (movie és actor joinnal) ez a bohóckodás egyszerűbbé tehető.
3. Rémlik valami olyasmi, hogy JPA/Hibernate alatt runtime felülbírálható a fetch mód. De itt is áll, hogy minden lazy és szükség esetén adott hívásnál döntöd el, hogy mit nyomatsz eagerrel. Mintha valamiféle fetch profilt kellene ehhez létrehozni (ezzel jól megannotálva az entitást), és az entitás lekérésekor elég csak a profilra hivatkozni.
4. ...
Sajnos nagyon régen Hibernate-eztem, nem biztos, hogy ezek a legjobb megoldások, vagy hogy egyáltalán működnek.
A hibernate doksit nézted már?Többnyire gúglit nézek, aztán onnan mindenfelé vezetnek utaim, többek között a hibernate doksihoz is.
Nekem az 1-es megoldás tetszik a legjobban, és ha nem jön be, akkor megnézem a többivel. A gond lehet, hogy valójában nem is itt van, hanem a JSON parserrel, de ez még kiderül, mindenesetre most nőtt annyival a tudásom, hogy jó ideig ellegyek vele.

Egyébként több helyen is olvastam, hogy a hibernatenek tudnia kéne kezelni eager fetchelés közben az ilyen ciklikus, 2 irányú many-to-many kapcsolatokat, de úgy látszik a gyakorlatban még sincs így.
(#7191) emvy: Hmm, logikusan tűnik.
-
#39560925
törölt tag
A transactional csak azt dönti el hogy a bean vagy a container manageli e a tranzakciót.Ettől még a dao hívás végén vége a tr-nek és a sessionnek is. Elvileg nem is lehet egynél több persistentbag-et fetchelni egyszerre. Attól hogy mindenki eager még nem lesz egy select az egész tehát a db kapcsolatot a tákolós megoldás is épp annyira terheli le.
Ahogy én eddig láttam erre rendszerint a külön dao hívások jelentenek megoldást. Mindegyiknél eldöntöd hogy mire van ténylegesen szükséged, alapból meg minden lazy.
Köszönöm, akkor nincs mese, ez az üzleti logika része lesz, és kézzel rakom össze. Igen, nyilván a hibernate se egy SQL query-vel oldaná meg, de feltételezem, hogy mivel alacsonyabb szinten van, ezért ha lenne benne ilyen lehetőség, jobban optimalizált megoldás lenne, mint az enyém.
-
#39560925
törölt tag
Ha egy service layer-beli osztályban van egy @Transactional metódus, ami meghívja egy DAO osztály metódusát, amely osztályban be van injektálva egy EntityManager @PersistenceContext-tel, akkor ennek az EntityManagernek a perzisztenciakontextusa megmarad a hívó service layer-beli metódusban is?
Most kísérleti jelleggel azt csinálom, hogy a RestController osztály metódusát jelöltem @Transactional-nek és az közvetlen hívja a DAO osztály metódusát, ami egy MovieEntityvel tér vissza, de amikor a RestController metódusa átadja a Jackson JSON parsernek a MovieEntityt, akkor mintha már nem lenne meg a perzisztenciakontextus, mert a hibernate proxy objektum megszűnt, és nem éri el a kapcsolódó entitásokat:
com.fasterxml.jackson.databind.JsonMappingException: failed to lazily initialize a collection of role: com.movietime.model.ActorsEntity.movies, could not initialize proxy - no Session
Próbálkoztam azzal, hogy EAGER fetchinget állítok be minden Entitás osztályban, és akkor nem lenne ilyen probléma, de akkor a túl sok bi-directional many-to-many asszociáció miatt megbolondul a hibernate és a Query.getSingleResult() már vissza se tér.
Kerestem olyan megoldást is, hogy lehessen korlátozni az EAGER fetching mélységét, de csak olyat találtam, hogy a LAZY-t lehet optimalizálni @BatchSize-zal. Viszont ez nekem nem jó, mert a JSON parserig már nem jut el a hibernate sessionje, vagy persistence contextje, nem tudom hogy hívjam.
Csinálhatnám azt is, hogy a DAO rétegben olyan lekérdezéseket írok kézzel, hogy lekérem a filmet, aztán lekérem a hozzá kapcsolódó színészeket, producereket, mindenkit, és összetákolom a kapcsolatokat, de ez egyrészt nagyon lábbal hajtós, másrészt az adatbáziskapcsolattal nagyon pazarló lenne. Jobb lenne, ha ezt a hibernate elintézné.
Az is jó lenne, ha a @Transactional úgy működne, ahogy a hsz elején a kérdésben feltettem, de nekem úgy tűnik, mintha nem így történne. Lehet azért, mert nem JTA típusú tranzakcióim vannak, hanem JPA?
-
#39560925
törölt tag
Vannak adatbázis entitásaim amik körbehivatkoznak egymásra, például MoviesEntity ismer csomó ActorsEntity-t és vica-versa. Ezeket az entitásokat akarom REST-en keresztük JSON-nel elérhetővé tenni, méghozzá úgy, hogyha jön egy GET request egy MoviesEntity-re, akkor fetchelje le a hozzátartozó Actorokat, Producereket, stb-t, de ne tovább. Ez sikerül is az alábbi módon:
MoviesEntity:
@JsonManagedReference
private List<ActorsEntity> actors;
...
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(name = "movies2actors", catalog = "movietime2", schema = "", joinColumns = @JoinColumn(name = "movieid", referencedColumnName = "movieid", nullable = false), inverseJoinColumns = @JoinColumn(name = "actorid", referencedColumnName = "actorid", nullable = false))
public List<ActorsEntity> getActors() {
return actors;
}ActorsEntity:
@JsonBackReference
private List<MoviesEntity> movies;
...
@ManyToMany(mappedBy = "actors") // LAZY fetching is default
public List<MoviesEntity> getMovies() {
return movies;
}Ez rendben is van. Viszont azt is szeretném, hogyha valaki egy Actor-t kérne GET requesttel, akkor ugyan úgy kapja meg az 1 távolságra lévő kapcsolódó entitásokat is (pl milyen filmekben játszott).
Erre nincs ötletem, nem is nagyon találtam neten semmit. Esetleg valaki tudja mi ilyenkor a teendő, vagy ha valaki jobban gúglizik, mint én, az is nagy segítség volna.
conditional annotiation ha lenne, milyen jó lenne.
-
#39560925
törölt tag
Sziasztok!
Eclipse-ben lefordul a programom, de terminálban ezt a hibát kapom, java Main.java beírása után:
Unsupported major.minor version 52.0.
1.7.0_75-öt ír a java -version; a javac -version 1.8.0_40-t
Ubuntu 14.10-et használokújabb verzióval fordítottad, mint amilyen JRE van a gépeden. szedd le a JRE 1.8-at és állítsd át a java HOME-ot arra.
-
#39560925
törölt tag
az akkor is logikailag hibás. 1. if kifejezésből az && utáni részt töröld ki, és a második ifben day_of_weeket hasonlíts az ellenkező relációjellel. utána pedig kizárásos alapon maradnak az == day_of_week-ű esetek, amin belül kell komparálni a másik dolgot.
Új hozzászólás Aktív témák
-
Fórumok
PROHARDVER! - hardver fórumok
Notebookok TV & Audió Digitális fényképezés Alaplapok, chipsetek, memóriák Processzorok, tuning Hűtés, házak, tápok, modding Videokártyák Monitorok Adattárolás Multimédia, életmód, 3D nyomtatás Tabletek, E-bookok Nyomtatók, szkennerek PC, mini PC, barebone, szerver Beviteli eszközök Egyéb hardverek PROHARDVER! BlogokMobilarena - mobil fórumok
Okostelefonok Mobiltelefonok Okosórák Autó+mobil Üzlet és Szolgáltatások Mobilalkalmazások Tartozékok, egyebek Mobilarena blogokIT café - infotech fórumok
Infotech Hálózat, szolgáltatók OS, alkalmazások SzoftverfejlesztésGAMEPOD - játék fórumok
PC játékok Konzol játékok MobiljátékokLOGOUT - lépj ki, lépj be!
LOGOUT reakciók Monologoszféra FototrendFÁRADT GŐZ - közösségi tér szinte bármiről
Tudomány, oktatás Sport, életmód, utazás, egészség Kultúra, művészet, média Gazdaság, jog Technika, hobbi, otthon Társadalom, közélet Egyéb Lokál PROHARDVER! interaktív
- Fórumok
- Szoftverfejlesztés
- Java programozás
- (kiemelt téma)
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- Apple iPhone 14 Pro Max 128GB Purple - Megkímélt állapot - 100% akku
- ÚJ Lenovo IdeaPad 1 - 15.6" FullHD - Ryzen 3 7320U - 16GB - 512GB SSD - Win11 - MAGYAR - 2 év gari
- BESZÁMÍTÁS! 4TB WD RED WD40EFAX HDD meghajtó garanciával hibátlan működéssel
- Nemzetközi csomagküldés olcsón EU akár 1900 Ft-tól CsomagExpress
- Apple iPhone 15 128GB, Kártyafüggetlen, 1 Év Garanciával
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest

ez most komoly?

![;]](http://cdn.rios.hu/dl/s/v1.gif)






