- Honor 200 Pro - mobilportré
- Motorola Edge 50 Neo - az egyensúly gyengesége
- Egyszerre legnagyobb és legkisebb is a Garmin Venu X1
- Szerkesztett és makrofotók mobillal
- Motorola Edge 40 - jó bőr
- iPhone topik
- Milyen okostelefont vegyek?
- Xiaomi 15 - kicsi telefon nagy energiával
- Samsung Galaxy A54 - türelemjáték
- Samsung Galaxy A36 5G - a középső testvér
Új hozzászólás Aktív témák
-
bucsupeti
senior tag
A static metódus arra enged következtetni hogy valószínű ugyan abban az osztályban van ez a kaloriaKiir metódus amiben a main() és azért static hogy tudd meghívni a main-ben.
Lehet hogy a vizsgára amire készülsz ez jó és elegendő. Én a következő osztályokkal dolgoznék:
Gyumolcs : egyetlen gyümölcs adatait tároló POJO osztály. semmi extra metódus nem kell ebbe. Max a toString-et írd felül hogy az objektum értékeit adja vissza.
KaloriaTabla : lenne benne egy ArrayList<Gyumolcs> lista, egy adatbeolvasó metódus ami feltöltené ezt a listát. Konstruktorba feltölteném a listát. Kell egy kereső metódus ami egy string alapján keres a listában a gyümölcs neve alapján és Gyumolcs-öt adnék vissza, vagy null-t ha nincs. (Ez az osztály lehetne akár singleton is, ha már tanultátok)
A futtató osztályban (amiben a main() van), megírnám a felhasználói felületet, menüt, a névbekérést stb. Itt példányosítanám a KaloriaTabla-t és ennek a kereső metódusát hívogatnám.
Igaza van Sirpi kollégának abban hogy a contains használata nem a legjobb megoldás. Ha contains-t használsz akkor kezeld úgy hogy nem csak egy hanem több gyümölcsöt is kaphatsz eredményül, és ilyenkor minden találatot jeleníts meg. -
bucsupeti
senior tag
válasz
Aethelstone #9440 üzenetére
.
-
bucsupeti
senior tag
Tudja valaki hogy mi lehet az oka hogy Netbeans 8.1-ben a következő jelenségnek?
Egy webalkalmazást készítek, hibernate-el. Van benne model package amiben vannak a hibernathez szükséges pojo-k annotációval .
a hibernate.cfg-re ha futtatok egy HQL queryt (from User) akkor rendben lefut minden, eredményben ott az oszlopok.
Ezután módosítottam az adatbázison, majd a pojo-ban is felvettem az új mezőt, annotálva.
Ezután ismét HQL query-t futtatok (from User) és nem látom az új mezőt.
Hiába clean-elem a projektet, no effect....
Bezárom a projektet, újranyitom... semmi.
Bezárom, kilépek a netbenasből, majd újraindítom és akkor látom a változást.
Ezt a jelenséget akár mikor reprodukálom.
Ubuntu 16.04 és Netbeans 8.1 Java 8-al és Tomcat-el (bár a tomcatnek itt még nincs túl sok szerepe)
Köszi a segítséget!
-
bucsupeti
senior tag
egyetértek veled!
Egyébként én magam kiteszem mindig a { } jeleket, még akkor is ha csak egyetlen utasítás van az adott blokkban (mint pl itt az if szerkezet).
Valahogy így:for(int i=0;i<MAX; i++) {
if (i>MIN) {
System.out.println("Alma");
} else {
System.out.println("Körte");
}
} -
bucsupeti
senior tag
válasz
Chesterfield #9089 üzenetére
A for ciklusnak nincsenek kapcsi tehát a teljes if tartozik hozzá. A system.out.println is.
A system.out sor elé kellene az ifet záró } jel es nem utána.
Egy javaslatom had legyen. az ékezetes betűket próbald hanyagolni az azonosítókban. -
bucsupeti
senior tag
válasz
fordfairlane #9068 üzenetére
Nyilván kell egy eszköz amin keresztül gyakorlatban is ki lehet próbálni az elméletet. Erre viszont semmiképp sem egy java féle környezetet javaslok.
Éppen ezért írtam azt hogy kell hozzá az architekturák és oprendszerek megfelelő összhangban történő tanulása.
pl miért és hogyan történik egy program indítása. hogyan történik a különféle adatok tárolása a memóriában. ahhoz hogyan fér hozzá a processzor. hogyan készül egy olyan program ami képes a memóriába betöltődni, majd ott elindulni és különféle utasítások végrehajtása kapcsán egy konkrét feladatot elvégezni....Szóval a java-ig meg az első osztály leírásáig el kell telni egy kis időnek ha valaki teljesen nulláról kezdi.
nyilván lehet úgy is tanulni hogy elindítja az ember a mindenféle okosságokkal felruházott IDE-t és ír benne java-ban vagy bármi más nyelvben programot, közben megtanulva a szekvencia-szelekció-iteráció egységeket alkalmazni. De az hogy közben mi és hogyan máködteti a magas szinten megírt programot ha valaki nem érti, nem látja át akkor ahogy alább írták, csak favágás lesz belőle.
Egy autószerelőnek ismernie kell az autók általános felépítését és működését a lehető legaprólékosabban. Ha nem ismeri akkor nem lesz jó autószerelő. Ki fogja tudni cserélni a gyertyákat, meg be fogja tudni állítani a gyújtást, de ez nem azt jelenti hogy érti is amit csinál. Kb ez a helyzet a programozással is.
Szóval érdemes az alapokat minél jobban megismerni, kár kihagyni ezeket a lépéseket.
-
bucsupeti
senior tag
válasz
fordfairlane #9066 üzenetére
Kb ezek:
szekvencia, szelekció, iteráció
alapvető adattípusok és struktúrák
összetett adatszerkezetek
programozási tételek, algoritmusok
objektum-orientált paradigmaValamint személyes meggyőződésem hogy ezzel párhuzamosan a számítógép architektúrákat és operációs rendszereket is megfelelő ütemben, összhangban kell tanulni (és oprendszer tantárgy alatt nem a windows grafikus felületének kezelésére gondolok.)
-
bucsupeti
senior tag
válasz
Chesterfield #8477 üzenetére
Tök mindegy melyik nyelvet valasztod szvsz. Sokkal fontosabb szerintem hogy az oop-vel tisztába legyél!
-
bucsupeti
senior tag
Köszi! Így valóban nem fut le az a kismillió select!
Mondjuk az okára kíváncsi vagyok. Arra gondolok hogy ilyenkor egy submit szerű dolog fut, ami miatt a form minden komponense inicializálódik. Azt gondoltam hogy a gomb immediate="true" tulajdonsága kikerüli ezt, de ezek szerint nem.
Mindenesetre a workaround működik! Köszi mégegyszer
-
bucsupeti
senior tag
Adott egy JSF (Primefaces) alkalmazás, a háttérben Hibernate + postgresql dolgozik.
Az alkalmazás főképernyőjén megjelenik három táblázat, ami három összetett, joinolt select eredménye amit a Hibernate generál.
Van egy kilépés gomb a formon aminek az a dolga hogy érvényteleníti a session-t és átirányít a login képernyőre:
Így néz ki az xhtml:<p:commandButton id="logoutButton" ajax="true" value="Kilépés" action="#{loginBean.doLogout()}" immediate="true"/>
Így pedig a bean:
public String doLogout(){
FacesContext.getCurrentInstance().getExternalContext().invalidateSession();
return "/index.xhtml?faces-redirect=true";
}Amikor ezt a parancsgombot megnyomom, akkor befrissíti a táblázatokat, azaz lefutnak a lekérdezések.
Ennek mi lehet az oka?
-
bucsupeti
senior tag
bár nem springezek de valóban ilyen lehet a probléma.
van ez "check leak" gomb a manager felületen. Azzal ellenőriztettem a betöltött osztályokat és hát televolt (kb 2 képernyőnyi osztály volt betöltve, mindig újabb verziók ahogy sorba kiküldtem azokat.Miután ujraindítottam ez a lista kiürült, de ahogy egy újabb verziót teszek ki abban a pillanatban megjelenik benne az osztályoknak egy újabb definiciója,
Ja és ettől természetesen sokkal fürgébb lett a deploy folyamat.
Köszönöm az infókat mindenkinek!
-
bucsupeti
senior tag
Segítsetek!
JSF (Primefaces) alkalmazást készítek és a dátumokkal nem boldogulok.
Az aktuális nap 00:00 időpillanata kell nekem dátum értékként.A szerver linux, dátumbeállításai:
mynet@myserver:~$ date
2016. aug. 1., hétfő, 12:23:32 CEST
mynet@myserver:~$ date -u
2016. aug. 1., hétfő, 10:23:39 UTCMost éppen 2016.08.01 12:20 van. Miért kapok 2016.07.31 10:00-át a következő kódra?
Bean realeváns része:
@PostConstruct
public void init() {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY,0);
cal.set(Calendar.MINUTE,0);
myDate = c.getTime();
}
public Date getMyDate(){
return myDate;
}JSF releváns rész:
<p:outputLabel value="Időszak: "/>
<p:outputLabel value="#{myBean.myDate}">
<f:convertDateTime pattern="yyyy.MM.dd hh:mm" />
</p:outputLabel> -
bucsupeti
senior tag
válasz
anddrew #8314 üzenetére
Ami kell hozza:
Egy szamitogep
Egy olyan operacios rendszer amire van java virtualis gep (windowsok, linux, osx)
Szovegszerkeszto hogy megird a forraskodot (a Word erre nem a legjobb valasztas)
JDK ami letoltheto az oracle honlaprolTechnikailag mas nem kell.
Megirod a java programot, amit a javac forditoval leforditasz bajtkodra, majd a bajtkodot futtataod a java nevu progival. Ennyi.
Angol nyelvu oktató oldal pl:
http://www.tutorialspoint.com/java/index.htm -
-
bucsupeti
senior tag
válasz
Aethelstone #7517 üzenetére
exchange levelezést szeretném elérni. küldeni nem akarok, csak olvasni a postafiókot.
A lényeg hogy figyleni szeretném hogy jött-e levél, és ha jött akkor a levél body-ját le szeretném menteni fájlba. -
bucsupeti
senior tag
valkinek van tapasztalata exchange szerver elérése terén? linux alól kellene elérni.
-
bucsupeti
senior tag
válasz
WonderCSabo #7296 üzenetére
windowsokon nem tudom most éppen mi a működés, de linuxon szerintem is az üres sorok kiiratása a jó módszer. -
bucsupeti
senior tag
válasz
fordfairlane #7052 üzenetére
ezzel egyetértek! Igen szegényes és gyenge a magyar java szakirodalom.
-
bucsupeti
senior tag
azt gondolom hogy konyvbol nem lehet megtanulni programozni. programozás oktatassal (is) foglalkozom es azt vallom hogy programozni ugy lehet megtanulni ha programozunk. programozas nem egyenlo valamilyen nyelv ismeretevel. az architekturalis alapok, az operacios rendszerek ismerete, a matematikai alapok, a programozasi elvek es paradigmak ismeret, az algoritmikus gondolkodas, az alapveto tervezesi technikak, az adatszerkezetek, meddig soroljam......
szoval nem eleg leulni es kodolni, kellenek az alapok, mert kulonben nem lesz a kodnak minosege es ez igen koltseges tud lenni.
mint irtam izlesek es pofonok. en nem tartom az angster konyveket folosleges temak halmazanak es azt sem mondom hogy hianytalan. jo konyv es kezdo szinten kelloen alapos.
a thinking meg pörgős es jóval gyakorlatiasabb.szerintem az angster melyebb elmeleti alapozast ad, a thinking pedig a sok gyakorlat miatt azonnal hasznalhato gyakorlati tudast.
-
bucsupeti
senior tag
-
bucsupeti
senior tag
válasz
smallmer #7008 üzenetére
mi lenne a célod? Az hogy egy tömbben el tudj tárolni számpárokat, vagy egy adott számpár által jelzett koordinátapont meg legyen jelölve? Esetleg a megadott Hely objektumot kell tárolni egy tömbben?
Kérlek pontosan fogalmazd meg, egyelőre nem tisztán értem a kérdésedet. -
bucsupeti
senior tag
válasz
PumpkinSeed #6973 üzenetére
én csinalnek efy diszpecser osztalyt ahova be lehet regisztralni a konyvtar objektumokat valamilyen konténerben tarolva:
List<Konyvtar> konvtarak = new ArrayList()
Ennek a diszpecser osztalynak lenne egy swapBooks() metodusa ami lezongorazna a cseret ugy hogy a konyvtarak sajat metodusait hivogatna.
A Konyvtar osztalynak a cseret metodusokkal kell tamogatnia. Tudni kell kezdemenyezni a cseret, valaszolni egy csere kerelemre befogadni a cserebe kapott konyvet, kiadni a cserebe adott konyvet.
a cseret a diszpecser osztaly bonyolitja le akinek a szabalyait elfogadja minden regisztralo konyvtar. ezzel biztosithato hogy a cserek "becsuletesen" fognak lezajlani.
a pelda kapcsan inkabb az oo elvek megertesere alkalmazasara torekedj ugyanis az a lenyege ennek a feladatnak. ha nagyon profi akarsz lenni akkor tervezesi mintakat is bele lehet szoni...
-
bucsupeti
senior tag
válasz
jetarko #6819 üzenetére
vágj bele, nem fogod megbánni, csak adj egy kis kifutást a dolognak, mielőtt megállapításokat teszel. A lányom 16 éves. 13 éves korában a netbookjára feltettem egy ubuntut. azóta nem hajlandó megválni tőle és teljes megelêgedéssel használja a mindennapi dolgaira (tanulás, kapcsolattartás, prezentációkészítés, dokumentumszerkesztês stb)
Ja és olyan problémákat hogy belassul, vírusos stb... elfelejthetsz...
-
bucsupeti
senior tag
válasz
kornyiktamas #6721 üzenetére
bocs, de azért ez nem feladatmegfogalmazás amit ide írtál! Mi a pontos feladatmegfogalmazás?
-
bucsupeti
senior tag
válasz
kornyiktamas #6716 üzenetére
ha angolul nem is tudsz azért a google-t talán tudod használni.
Ebben is segítek. -
bucsupeti
senior tag
szerintem nem telepítetted a jdk-t és ezért a jre könyvtárat találtad meg. Telepítsd a JDK-t (emiben egyébként a JRE is benne van) és menni fog.
Egyébként a java nyelv mellett érdemes nagyon erősen az objektum orientált programozási elveket és módszereket (programtervezési mintákat) tanulni, alkalmazni....
-
bucsupeti
senior tag
Milyen notebook-ot javasoltok Java fejlesztéshez?
Proci? memória? (SSD meg úgyis alap).
Ha írnátok konkrét típusokat az jó lenne. -
bucsupeti
senior tag
válasz
SirRasor #6451 üzenetére
kóstolj bele mindegyikbe. aztán válaszd a számodra legszimpatikusabbat annak alapján amit tapasztaltál (ne a fórumokon, meg itt-ott hallott információk alapján). Így meg fogsz ismerni több IDE-t is valamilyen szinten, ami már jó alap lesz arra, hogy később ha szükséges akkor tudj használni másik IDE-t.
Én az egyetemen Netbeans-t ismertem meg először és használtam is, majd később az EE és Android miatt átálltam Eclipsre, most pedig mivel az androidnál az Android Studio-t preferálják azt is használom (ami IntelliJ).
Gyakorlatilag mindhárom IDE-ben elboldogulok, ha kell bármelyikre rá tudok hangolódni.
Egyébként Eclipse párti vagyok. -
bucsupeti
senior tag
A ciklusfejben és a ciklusmagban is van egy növelése a ciklusváltozónak.
A System.out.print (++i +" "); sorban legelőször az i értéke növekszik, majd kiirásra kerül.
System.out.print (n++ +" "); sorban először kiirásra kerül az n majd utána növekszik az értéke.Még annyit hozzátennék hogy szerintem a növekményes ciklusban (for) ne piszkáljuk a ciklusváltozót a ciklusmagban. Ha erre szükség van akkor ne for hanem while ciklust kell alkalmazni.
Utálom amikor eröltetett példákkal próbálják magyarázni egy-egy nyelvi elem működését. Ennél már csak a "mutatóramutatómutatóttatalmazómutató" a szebb amit C-ben szoktak példázni, de a gyakorlatban ilyen soha nem jön elő.
-
bucsupeti
senior tag
nem tudom ismeritek-e, de jó kis szórakozás és tanulni is lehet belőle: http://www.codewars.com/
Eddig nem volt benne Java, de most végre bétában betették! Lehet feladványokat is csinálni, vagy mások feladványát megcsinálni. Ha valamit sikerült megoldani, akkor mások megoldását is meg lehet nézni. Ebből pedig sokat lehet tanulni. -
bucsupeti
senior tag
válasz
WonderCSabo #6149 üzenetére
Jogos! Köszönöm!
-
bucsupeti
senior tag
Sziasztok!
Jól sejtem hogyha a konstruktorban kivételt dobok, akkor a new operátorral null-t kapok, azaz nem jön létre az objektum? Próbálgatás alapján így van, csak erősítsétek meg nekem pls.
szerk: közben megtaláltam a választ... de azért érdekel a véleményetek a témáról!
-
bucsupeti
senior tag
Csináld meg először karakteres programként. Ha az működik utána csinálj hozzá gui-t. Szerintem sokkal jobban meg fogod érteni és el tudod szeparálni az alkalmazás egyes rétegeit és ha a gui-s részhez érsz, már egyértelmű lesz az is hogy hol is tárolódik az alkalmazás valamilyen adata...
Magyarul először az üzleti logikát dolgozd ki...
-
bucsupeti
senior tag
desktop alkalmazásnál ez miért probléma? bejelentkezéskor eltárolod egy objektumban az adatokat... Nyilván ennek az objektumot minden modulból elérhetőnek kell lenni.
Lehet hogy nem értem igazán hogy mit szeretnél.Vagy összekattintgattad a képernyőket és a login képernyőről a sikeres bejelentkezés után az infókat akarod továbbvinni?
-
bucsupeti
senior tag
válasz
Aethelstone #5885 üzenetére
+1
A JDBC segítségével az adatbáziskezelés fapados módját ismerje meg, majd utána jöjjön az ORM!
-
bucsupeti
senior tag
Ez a példa amit felvázoltál Java EE tanulásra tényleg megfelelő. De ha most kezded a JAVA-t akkor lehet hogy inkább valamilyen lokális alkalmazást JAVAsolnék.
Az EE-t én is nem régen kezdtem és hatalmas a téma, rengeteg framework kínálja magát, az adatbázisokról és a perzisztenciakezelőkről nem is beszélve.A példád alapján én a következőt javaslom:
Csináld meg a felvázolt példát karakteres JAVA programként. Lehessen lekérdezni a szabad helyeket, amit egyenlőre kilistázna. Akár lehet bonyolítani hogy bekéri hogy a nézőtér melyik sorára kíváncsi a felhasználó, ezt beírva kiírná hogy az adott sorban milyen sorszámú székek szabadok.
Jó kis tanuló algoritmus lehet hogy megadja a felhasználó hogy hány helyet szeretne és kilistázza hogy hol tud ennyi széket egymás mellett foglalni stb...Ezt először csináld meg adatbázis nélkül a memóriában tárolva konténerekkel. Utána csináld meg JDBC-vel adatbázisban, majd valamilyen perzisztenciakezelővel.
Meg fogod tapasztalni hogy milyen jó dolog egy ORM rendszer.
Ezek után belekóstólhatsz a gui programozásba, lokális desktop alkalmazást csinálva swing komponensekkel.Ezek után jöhet a felvázolt weboldal, de ez nagyobb falat lesz az biztos. A JavaEE megismerése nem kis feladat. Meg kell ismerni az architekturát, a servlet konténereket, az alkalmazásszervereket. Utána jöhet az EJB programozás és valamilyen framework amivel kényelmesen tudod összerakni a ui-t.
A példa szerintem jó, meg lehet rajta keresztül sokmindent tanulni. Sok sikert és kitartást!
-
bucsupeti
senior tag
válasz
Lortech #5812 üzenetére
Nem azt mondtam hogy mindenhez ész nélkül generáltatok getter/setter-t. Ebben a példában simán hibás minden. publikus adattagokkal van minden összedobva. Ez mellett az említett number tagot direktben kérdezi le. Úgy látom ez egy oktató, gyakorló példa, amiben szerintem már régen túl kéne azon lenni, hogy az adattagokra nem hivatkozunk közvetlenül. Ha a p1 objektum el akarja mondani hogy mi az ő tippje, akkor azt mondja meg (metódus) és ne kibányásszák az agyából (közvetlen adattag elérés).
Mégegyszer mondom, OKTATÁSI szinten tartom hibásnak a "minden publikus" elvet.
-
bucsupeti
senior tag
válasz
RaPiDsHaRe #5808 üzenetére
Vettem a fáradtságot és bemásoltam Eclipse-be a forrásokat. Így néz ki a projekt:
Az Eclipse-ből indítható, működik (hogy jól-e azt nem néztem, de lefut és normálisan befejeződik).
Ezután a projektre ha jobb egérgombot nyomsz, majd kiválasztod az Export... menüt ott ki tudod exportálni futtatható JAR fájlként (Runable JAR).
Exportálás után parancssorba így lehet futtatni a progit: java -jar jarfájlneve.jarEgyébként nagyon csúnya dolog javában a publikus adattag. Ilyen pl a Player osztályban a number. Ugyan működik a program de az egyik objektum-orientált elvet sérti meg a program, mégpedig az egységbezárást (Encaptulation). Illik private-ként deklarálni az adattagokat, és getter/setter metódusokkal intézni az adattagok írását, olvasását.
-
bucsupeti
senior tag
válasz
RaPiDsHaRe #5805 üzenetére
biztos van rá valamilyen parancssori megoldás is, de én inkább valamelyik IDE-vel csinálnám.
Létre kell hozni egy standard java projektet. abban létre kell hozni három class-t amikbe természetesen a három forrásfájl van.
Ezután már futtatható IDE-ből, exportálható JAR fájlba, majd futtatható a jar a JVM segítségével... -
bucsupeti
senior tag
EE témával kapcsolatban lenne kérdésem. Nemigazán vagyok otthon a témában, most kezdek részletesen belemerülni.
A kérdésem az hogy mi a különbség ha EJB-vel vagy ha az nélkül csinálok egy web alkalmazást? Értem hogy az EJB-k azok önállóan futkorásznak a konténerben és ezeket meg lehet szólítani és a publikált szolgáltatásait elérni. Ebben lehet pl valamilyen perzisztenciakezelőn keresztüli adatbázis elérés stb.
Ugyanakkor csináltam próbaként olyan alkalmazást ami Tomcat-en futott, nem volt benne semmiféle EJB és azzal is tudtam Hibernate-el adatbázist kezelni.
Szóval mi a különbség az EJB konténerben és a WEB konténerben futtatott üzleti logika között?
Értem hogy szebb ha elkülönül ez a réteg, de egyéb más előny/hátrány van? Pl többfelhasználós környezetben tud működni a webkonténeres megoldás? -
bucsupeti
senior tag
Egy olyan kérdésem lenne hogy hogyan, milyen környezetben történik egy szoftverfejlesztő vállalatnál a szoftverfejlesztés? Főként bonyolult EE fejlesztésre gondolok ahol több programozó, designer, stb dolgozik ugyanazon projekten.
Gondolom többen vagytok akik ilyen vállalatnál dolgoztok. Biztosan van valami verziókezelő rendszer stb.
De mégis hogyan adják ki a feladatot, hogyan történik egy-egy verzió build, stb...
Ha egy projekten dolgozik 4-5 programozó, akkor ők hogyan tesztelik a saját maguk részét? Nemhiszem hogy ez csak a teljes projekt futtatásával lehetséges.Én egyelőre csak SE alkalmazásokat készítettem, de érdekel az EE világ nagyban is.
Írnátok erről pár gondolatot?
Azért írom ide mert kimondottan Java környezetben érdekel ez a téma. Nem tudom hogy általánosságban is ugyan azok a dolgok működnek-e, vagy van speckó Java módszer...
-
bucsupeti
senior tag
Én is éppen most kerestem hasonló framework-öt. Én a vaadint választottam, főleg az egyszerűsége miatt.
Sok jó cikk, könyv, videó érhető el ami az ismerkedéskor sokat segített. A honlapja is jó, bőven van információ és jól érthető leírás, referencia, tutorial. Netbeans és Eclipse alatt is kényelmesen, gyorsan lehet fejleszteni. -
bucsupeti
senior tag
Webes Java EE alkalmazásokkal ismerkedem. A kérdésem az hogy milyen framework-öt érdemes használni amivel egyszerűen, gyorsan lehet szép UI-t készíteni? Nézegetem a Vaadin-t. Ez megfelelő lehet? Hasonlót keresek.
-
bucsupeti
senior tag
Szerintetek az alábbi metódus mit ír ki a következő ar tömbbre:
int[] ar = {8, 7, 5, 6, -3, -2, -1, -4};static void printSecondSmallest(int[] ar){
int s1,s2;
if (ar[0]<ar[1]){
s1=ar[0];
s2=ar[1];
} else {
s1=ar[1];
s2=ar[0];
}
for(int i=2;i<ar.length;i++){
if (ar[i]<s1) {
s1=ar[i];
s2=s1;
} else if (ar[i]<s2)
s2=ar[i];
}
System.out.println(s2);
} -
-
bucsupeti
senior tag
válasz
skoda12 #3171 üzenetére
Köszönöm az eddigi válaszokat. Közben megoldódott a dolog egy session.clear() oldotta meg a problémát a tranzakció lezárása után.
"Ez anti-pattern. Mivel desktop approl van szo, gondolom csak egy user hasznalja egyszerre. Boven eleg akkor nyitni uj sessiont, ha az elozo inkonzisztens allapotba kerul."
Az igaz hogy desktop app, de ez miért is vonja maga után hogy "csak egy user használja egyszerre"?
Desktop app, de központi adatbázissal dolgozik. Az alkalmazás pedig a felhasználók gépein található meg.Egyébként nagy baj az ha egyetlen session-t használok a futás alatt?
Az architektúra úgynéz ki, hogy vannak a perzisztens osztályok, ez mellett van egy üzleti logikát megvalósító osztály (UzletiLogika) és van a kliens, ami bármi lehet, jelenleg egy desktop swing GUI.
Az UzletiLogika osztálynak egyetlen statikus adattagja van, ami nem más mint egy Session. Ezen dolgozik az összes metódus. A metódusok a kliens(ek)nek szolgáltatnak adatokat, amik különféle egyszerű és összetett adatszerkezeteket adnak át. A perzisztens osztályok adattagjait alakítják át listákká, vektorokká stb...
Paraméterül azonosítókat kapnak és soha nem adnak vissza perzisztált objektumot.
Így az UzletiLogika osztályban dolgozik csak a Hibernate. A GUI csak meghívja az ottani metódusokat és valamilyen nem perzisztens adatot kap, amit megjelenít.Most már működik a program.
A kérdésem az hogy a felvázolt architektúra szerintetek rendben van? Illetve jó megoldás-e az egyetlen session használata?
-
bucsupeti
senior tag
Sziasztok!
Adott egy Hibernate-et és MySQL-t használó NetBeans alatt készített alkalmazás GUI-val.
Két táblázat van benne, amiket feltöltök a perzisztens objektumokkal. A második táblázat az első detail táblája, azaz az egyik adattagja (ami Set típusú) tételeit tartalmazza.
A lényeg az hogy ha törlök valamit a detail táblából akkor látom az SQL parancsot (delete) az output ablakban. Az SQL adatbázist megnézve látszik hogy törlődött a rekord, viszont a vizuális komponensben (jTable) nem látszik a frissítés. Természetesen újra feltöltöm a táblát, de nem frissül. Olyan mintha valahol (cache?) ott maradna az adat. Új session-t indítok minden egyes lekérdezésre, flush() és evicat() meg minden van a törlő művelet után, de nem frissül. Az output ablakban látszik hogy a select nem fut le újra, pedig ott van a lekérdezés és debugolva is ellenőriztem végrehajtja a sort, de nincs adatbázis kérés mögötte.
Ha kilépek és újraindítom a progit akkor már minden rendben látszik.Hogy lehet rábírni hogy frissüljön rendben minden? Mi a francért nem frissül?
-
bucsupeti
senior tag
NetBeans Platformos kérdésem lenne.
Szerintetek egy swing vastagkliens alkalmazásba hol célszerű a Hibernate konfigurációt intézni?
Hol inicializálódjon a SessionFactory?Mivel ennek az egész program alatt működnie kell én arra gondoltam hogy a main()-ban valahol. Viszont ha ott indul és a main egyik lokális változójába teszem a SessionFactory-t, akkor azt máshol nem érem el.
Ezért arra gondoltam hogy a main()-t tartalmazó osztály adattagja kell hoyg legyen a SessinFactory, így a teljes programban érvényes lesz és használható, lehet belőle Session-t kérni stb...Jó ez a gondolat? A NetBeans tutorialban egy külön metódus van definiálva a query futtatására, majd abból van megjelenítve (egy jTable komponensbe). Nem is ez a lényeg.
Nekem az a fura hogy ez a tutorial-os példa minden egyes gombnyomásra futtat egy lekérdezést. Ehhez minden egyes alkalommal felépíti a SessionFactory-t (azaz beolvastatja a hibernate.cfg.xml-t és a mappingokat stb). Ez számomra logikátlannak tűnik és fölöslegesnek tűnik.
A könyvek azt írják hogy elég egyetlen SessionFactory egy adatbáziskapcsolathoz és ezen indítsuk a session-öket és a tranzakciókat. Ezzel ez tök ellentétes.
Erősítsetek meg, vagy magyarázzátok meg hogy miért jó úgy ahogy a tutorialban van. Ti hogy csinálnátok?Köszi a válaszokat!
-
bucsupeti
senior tag
Segítségeteket kérném, mert egyszerűen nem bukkanok rá a megoldásra.
NetBeans 7.2-t használok.Egyszerű JDBC adatbáziskezelő demó programocskát csináltam, amivel demonstráltam a Sakila MySQL demó adatbázis egy tábláján végzett (CRUD) műveleteket. A program konzolra ír, nincs benne semmi extra, teszi a dolgát, működik rendesen.
Csináltam egy másik példaprogramocskát (szintén konzolos), ami ugyan ezen műveleteket végezné el Hibernate-et alkalmazva. Ez is működik rendben.
A problémám az hogy a Hibernate demó program az indulásakor logol a konzolra. Hallottam már a log4j-ről, de én ilyet nem kapcsoltam be sehol egyik programban sem. Ráadásul INFO szinten küldi a logot, azaz szinte mindent kiír. Ha JAR-t csinálok és az futtatom parancssorba ott is írja a logot a konzolra.
Hogyan lehet ezt kikapcsolni? Miért kapcsolódott ez be a Hibernate-es programban?
Itt a teljes log amit kiír:
nov. 10, 2012 10:01:50 DE org.hibernate.cfg.annotations.Version <clinit>
INFO: Hibernate Annotations 3.3.1.GA
nov. 10, 2012 10:01:50 DE org.hibernate.cfg.Environment <clinit>
INFO: Hibernate 3.2.5
nov. 10, 2012 10:01:50 DE org.hibernate.cfg.Environment <clinit>
INFO: hibernate.properties not found
nov. 10, 2012 10:01:50 DE org.hibernate.cfg.Environment buildBytecodeProvider
INFO: Bytecode provider name : cglib
nov. 10, 2012 10:01:50 DE org.hibernate.cfg.Environment <clinit>
INFO: using JDK 1.4 java.sql.Timestamp handling
nov. 10, 2012 10:01:50 DE org.hibernate.cfg.Configuration configure
INFO: configuring from resource: /hibernate.cfg.xml
nov. 10, 2012 10:01:50 DE org.hibernate.cfg.Configuration getConfigurationInputStream
INFO: Configuration resource: /hibernate.cfg.xml
nov. 10, 2012 10:01:51 DE org.hibernate.cfg.Configuration addResource
INFO: Reading mappings from resource : hibernatedemo/Actor.hbm.xml
nov. 10, 2012 10:01:51 DE org.hibernate.cfg.Configuration doConfigure
INFO: Configured SessionFactory: null
nov. 10, 2012 10:01:51 DE org.hibernate.cfg.HbmBinder bindRootPersistentClassCommonValues
INFO: Mapping class: hibernatedemo.Actor -> actor
nov. 10, 2012 10:01:51 DE org.hibernate.cfg.AnnotationConfiguration secondPassCompile
INFO: Hibernate Validator not found: ignoring
nov. 10, 2012 10:01:51 DE org.hibernate.connection.DriverManagerConnectionProvider configure
INFO: Using Hibernate built-in connection pool (not for production use!)
nov. 10, 2012 10:01:51 DE org.hibernate.connection.DriverManagerConnectionProvider configure
INFO: Hibernate connection pool size: 20
nov. 10, 2012 10:01:51 DE org.hibernate.connection.DriverManagerConnectionProvider configure
INFO: autocommit mode: false
nov. 10, 2012 10:01:51 DE org.hibernate.connection.DriverManagerConnectionProvider configure
INFO: using driver: com.mysql.jdbc.Driver at URL: jdbc:mysql://localhost:3306/sakila
nov. 10, 2012 10:01:51 DE org.hibernate.connection.DriverManagerConnectionProvider configure
INFO: connection properties: {user=root}
nov. 10, 2012 10:01:51 DE org.hibernate.cfg.SettingsFactory buildSettings
INFO: RDBMS: MySQL, version: 5.1.36-community-log
nov. 10, 2012 10:01:51 DE org.hibernate.cfg.SettingsFactory buildSettings
INFO: JDBC driver: MySQL-AB JDBC Driver, version: mysql-connector-java-5.1.18 ( Revision: tonci.grgin@oracle.com-20110930151701-jfj14ddfq48ifkfq )
nov. 10, 2012 10:01:51 DE org.hibernate.dialect.Dialect <init>
INFO: Using dialect: org.hibernate.dialect.MySQLDialect
nov. 10, 2012 10:01:51 DE org.hibernate.transaction.TransactionFactoryFactory buildTransactionFactory
INFO: Using default transaction strategy (direct JDBC transactions)
nov. 10, 2012 10:01:51 DE org.hibernate.transaction.TransactionManagerLookupFactory getTransactionManagerLookup
INFO: No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended)
nov. 10, 2012 10:01:51 DE org.hibernate.cfg.SettingsFactory buildSettings
INFO: Automatic flush during beforeCompletion(): disabled
nov. 10, 2012 10:01:51 DE org.hibernate.cfg.SettingsFactory buildSettings
INFO: Automatic session close at end of transaction: disabled
nov. 10, 2012 10:01:52 DE org.hibernate.cfg.SettingsFactory buildSettings
INFO: JDBC batch size: 15
nov. 10, 2012 10:01:52 DE org.hibernate.cfg.SettingsFactory buildSettings
INFO: JDBC batch updates for versioned data: disabled
nov. 10, 2012 10:01:52 DE org.hibernate.cfg.SettingsFactory buildSettings
INFO: Scrollable result sets: enabled
nov. 10, 2012 10:01:52 DE org.hibernate.cfg.SettingsFactory buildSettings
INFO: JDBC3 getGeneratedKeys(): enabled
nov. 10, 2012 10:01:52 DE org.hibernate.cfg.SettingsFactory buildSettings
INFO: Connection release mode: auto
nov. 10, 2012 10:01:52 DE org.hibernate.cfg.SettingsFactory buildSettings
INFO: Maximum outer join fetch depth: 2
nov. 10, 2012 10:01:52 DE org.hibernate.cfg.SettingsFactory buildSettings
INFO: Default batch fetch size: 1
nov. 10, 2012 10:01:52 DE org.hibernate.cfg.SettingsFactory buildSettings
INFO: Generate SQL with comments: disabled
nov. 10, 2012 10:01:52 DE org.hibernate.cfg.SettingsFactory buildSettings
INFO: Order SQL updates by primary key: disabled
nov. 10, 2012 10:01:52 DE org.hibernate.cfg.SettingsFactory buildSettings
INFO: Order SQL inserts for batching: disabled
nov. 10, 2012 10:01:52 DE org.hibernate.cfg.SettingsFactory createQueryTranslatorFactory
INFO: Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory
nov. 10, 2012 10:01:52 DE org.hibernate.hql.ast.ASTQueryTranslatorFactory <init>
INFO: Using ASTQueryTranslatorFactory
nov. 10, 2012 10:01:52 DE org.hibernate.cfg.SettingsFactory buildSettings
INFO: Query language substitutions: {}
nov. 10, 2012 10:01:52 DE org.hibernate.cfg.SettingsFactory buildSettings
INFO: JPA-QL strict compliance: disabled
nov. 10, 2012 10:01:52 DE org.hibernate.cfg.SettingsFactory buildSettings
INFO: Second-level cache: enabled
nov. 10, 2012 10:01:52 DE org.hibernate.cfg.SettingsFactory buildSettings
INFO: Query cache: disabled
nov. 10, 2012 10:01:52 DE org.hibernate.cfg.SettingsFactory createCacheProvider
INFO: Cache provider: org.hibernate.cache.NoCacheProvider
nov. 10, 2012 10:01:52 DE org.hibernate.cfg.SettingsFactory buildSettings
INFO: Optimize cache for minimal puts: disabled
nov. 10, 2012 10:01:52 DE org.hibernate.cfg.SettingsFactory buildSettings
INFO: Structured second-level cache entries: disabled
nov. 10, 2012 10:01:52 DE org.hibernate.cfg.SettingsFactory buildSettings
INFO: Statistics: disabled
nov. 10, 2012 10:01:52 DE org.hibernate.cfg.SettingsFactory buildSettings
INFO: Deleted entity synthetic identifier rollback: disabled
nov. 10, 2012 10:01:52 DE org.hibernate.cfg.SettingsFactory buildSettings
INFO: Default entity-mode: pojo
nov. 10, 2012 10:01:52 DE org.hibernate.cfg.SettingsFactory buildSettings
INFO: Named query checking : enabled
nov. 10, 2012 10:01:52 DE org.hibernate.impl.SessionFactoryImpl <init>
INFO: building session factory
nov. 10, 2012 10:01:52 DE org.hibernate.impl.SessionFactoryObjectFactory addInstance
INFO: Not binding factory to JNDI, no JNDI name configured -
bucsupeti
senior tag
A példa erőltetett. Persze nem így célszerű ezt megoldani.
Igazából azt szeretném, hogy SE környezetben valahogy modellezni, példaalkalmazást készíteni egy háromrétegű architektúra demonstrálására.
[ui] + [üzleti logika] + [adatbázis]Az ui lenne az a rész amit nem fordítok újra. Az üzleti logikában történik változás és azt akarom demonstrálni hogy ennek a modul változtatása független a többi rétegtől. Az adatbázis meg az ami.
Nyilván ez normális felhasználás esetén JavaBean, servlet meg minden EE csoda segítségével gyönyörűen megvalósítható, de éppen ezeket szeretném "hanyagolni" és SE környezetben, lokálisan valahogy demonstrálni.
-
bucsupeti
senior tag
Nem biztos hogy teljesen jól fogalmaztam meg a dolgokat.
Szóval azt szeretném, hogy van egy "csomagom", ami tartalmaz egy osztálydefiníciót (csomag1.java). Ezután készítek egy java programot (teszt.java), ami használja a csomagban definiált osztályt (import csomag1).
Ezután változtatok a csomag1.java fájlban, újrafordítom a csomag1-et (de a teszt.java-t nem!!!!) és az eredeti teszt.class újrafordítás nélkül a csomag1 változtatásait ismeri.Lehet hogy egyszerűbb konkért példán keresztül:
Szóval Aru.java:
class Aru {
private String aruNev;
private int nettoAr;
[B]private static int afaKulcs=27;[/B]
public Aru(){
}
public Aru(String aruNev, int nettoAr, int afaKulcs){
this.aruNev=aruNev;
this.nettoAr=nettoAr;
this.afaKulcs=afaKulcs;
}
public String getAruNev(){
return aruNev;
}
public void setAruNev(String aruNev){
this.aruNev=aruNev;
}
public int getNettoAr(){
return nettoAr;
}
public void setNettoAr(int nettoAr){
this.nettoAr=nettoAr;
}
public float getAfaErtek(){
return nettoAr*afaKulcs/100;
}
}Ezután megírom a király számlázó programot ami használja az Aru osztályt (Szamlaz.java) és lefordítom (Szamlaz.class). Közben megváltozik az üzleti logika és ezért a statikus adattagot átírom az új áfa értékre. Lefordítom az Aru.java-t és ezt a számlázó program újrafordítás nélkül tudja alkalmazni.
Az azért már kiderült hogy erre nem jó a csomag módszer, mert teljes újrafordítás kell.
Van erre valami módszer Java SE-ben? Vagy ehhez már valamiféle enterprise megoldás kell? -
bucsupeti
senior tag
Köszönöm az infókat!
@Karma: mi a Maven pontosan? Mire használható?
-
bucsupeti
senior tag
sziasztok,
lehet olyat csinálni java-val, mint amilyenek a dll-ek más programozási nyelvekben?
arra gondolok pl, hogy egy osztályt lehet-e valahogy küsöleg hivatkozni a fordítása után egy másik különálló fejlesztéskor. -
bucsupeti
senior tag
Esetleg adatbázis kezeléshez használj valamilyen ORM-et (Object Relation Mapping). Ajánlom pl a Hibernate-t. Ezzel egyszerűen rábízhatod az adatbázis kezelési feladatokat a Hibernate-re az elvégez minden tranzakciót, te pedig "minden erődet" az osztályokra és az objektumokra koncentrálhatod. Jó kis tutorialok vannak Hibernate-hez, egyszerűen meg tudod oldani vele a feladatot és minimális db programozás ismeret kell hozzá.
-
bucsupeti
senior tag
válasz
RaPiDsHaRe #2775 üzenetére
Ezt nézd meg. Egy remek magyar nyelvű videós tutorial az Eclipse-hez. Ennél jobbat nem tudok ajánlani. A JPA az tévút neked egészen biztos (egyébként NetBeans-el könnyebb az indulás és remek IDE az is....)
Új hozzászólás Aktív témák
Hirdetés
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- Hitelkártyák használata, hitelkártya visszatérítés
- Kuponkunyeráló
- BestBuy topik
- Az áremelések és a GTA VI késése miatt nem költekeznek a játékosok?
- Tőzsde és gazdaság
- Napelem
- Egyre csak fejlődik az AI, emberek tízezreit rúgja majd ki a BT
- Honor 200 Pro - mobilportré
- Path of Exile (ARPG)
- E-roller topik
- További aktív témák...
- Csere-Beszámítás! Asus Rog Strix G731GU Gamer Noti! I7 9750H / GTX 1660TI / 16GB D4 / 512 SSD
- Makulátlan PlayStation 5 lemezes kiadás + 2 játékkal, garanciával!
- AMD Ryzen 7 7700 - Új, 1 év garancia - Eladó!
- AMD Ryzen 7 5700X - Új, 3 év garancia - Eladó!
- Dell G3 3500 Gamer laptop szép állapotban dobozával. (i7 10750h, Gtx 1660ti, 16GB ram, 1TB ssd)
- Targus Universal USB 3.0 DV1K-2K Compact docking station (DisplayLink)
- Bomba ár! Dell Latitude E5570 Touch - i5-6300U I 8GB I 256SSD I 15,6" FHD I HDMI I CAM I W10 I Gari
- Bomba ár! Lenovo X1 Yoga 2nd - i7-7G I 8GB I 256SSD I 14" WQHD I HDMI I W11 I CAM I Garancia!
- Konzol felvásárlás!! Xbox Series S, Xbox Series X
- Telefon felvásárlás!! iPhone 16/iPhone 16 Plus/iPhone 16 Pro/iPhone 16 Pro Max
Állásajánlatok
Cég: PC Trade Systems Kft.
Város: Szeged
Cég: CAMERA-PRO Hungary Kft
Város: Budapest