Omlouvam se, ale toto uz opravdu nejde.
Minule uz na to byl autor upozornovan, ze zjistovani existence tabulek, pohledu a procedur se opravdu nedela pomoci obskurnich SQL dotazu, ale existuje pro to trida: java.sql.DatabaseMatadata ... a on to zase naprasi...
Vytvaret spojeni pri kazdem dotazu do databaze je diletanstvi nejhrubsiho zrna. Pikantni na tom je, ze to kombinuje s PreparedStatements. Uvedomuje si autor vubec, k cemu ty prepared statements jsou?
ano je
upravy toho clanku by znamenali ze ho treba cely prepisat
a to nehovorim o tom ze koncepcia serialu je strasidelna: je to o javafx a uz druhy diel je dominantne o niecom uplne inom
priklad na ktorom sa ma javafx ukazovat zacne "skontrolujme pritomnost databazovych pohladov". wtf dude?
preco komentatori maju robit robotu za autora? tie upravy zdrojakov mal robit autor ktory sa porozpraval s nejakym redaktorom nez to pojde von.
z rychlika (vid ded kenedy minule): metadata schemy maju normalne api v jdbc. jdbc pouzivat rucne je v praxi samovrazda (commons dbutils, anyone?). zdrojaky vyzeraju jak z nepodarenej ucebnice turbopascalu z 1992. java konvencie isli na dovolenku uz pred mesiacom.
ok, pak by vám mělo být zjevné že vase příspěvky jsou prakticky pouze bezvýznamné výkřiky do tmy bez praktických důkazů. Navíc působíte dojmem že se mezi sebou utvrzujete v bludu že vaše řešení je jediné správné a ostatní jsou chybné.
PS. tvz. java konvencia dle oficiálního zdrojů neexistuje jinak by ji kompilator zablokoval. Jedná se pouze o doporučení Java komunity kterou Oracle naprosto ignoruje. Ani IDE pro to nemají žádnou podporu ve formě warningu,či erroru.
PSS. no sorry ale používat JPA,JPA2( ve formě hibernate,eclipselink,openJPA) za mě připadá naprosto zbytečné pro něco tak triviálního jako je tento příklad. Kdyby bylo JDBC za nesmysl, tak by se už zrušilo.
PSSS. a to nejdůležitější na konec : pokud mu to funguje bez chyb pak je program v pořádku.
Nase vykriky nejsou bez vyznamu, doufam. Slouzi k tomu, aby ti, co by se nahodou chteli podle toho neco naucit, aby vedeli, ze je to blbe.
Zjistovani pritomnosti tabulky, pohledu, atp. podle dotazu do systemoveho katalogu je principialne blbe a to vzdy. Protoze jednak je takove reseni neprenositelne mezi databazovymi systemy a to do takove miry, ze v dalsi verzi postgresql muze dojit ke zmene struktury tabulek a program prestane fungovat. Takto se opravdu programovat nema, obzvlast, pokud existuje standardizovane API v podobe JDBC poskytujici metada.
Vytvareni nove konexe do databaze s kazdym dotazem je take prasarna, protoze sestaveni spojeni neni zrovna 2x rychla operace. Vtipne na tom, je ze autor pouziva PrepareStatement, coz je prostredek, ktery umoznuje databazi pripravit se a optimalizovat si casto opakujici se dotazy. Tim, ze se vytvori nove spojeni, PreparedStatement nema zadny efekt.
A dalo by se pokracovat... Ano, mohl bych opravit ty chyby, ale to by znamenalo, udelat celou vec znovu a poradne, ale ten cas mi nikdo nezaplati.
tvz. java konvencia dle oficiálního zdrojů neexistuje jinak by ji kompilator zablokoval. Jedná se pouze o doporučení Java komunity kterou Oracle naprosto ignoruje. Ani IDE pro to nemají žádnou podporu ve formě warningu,či erroru.
Proc lzes? Eclipse bezne zvyraznuje nedodrzeni konvence. FYI je to konvence, ne specifikace jazyka, proto ji prekladac nevynucuje, ale to nic nemeni na tom, ze je vhodne konvence dodrzovat, aby se v tom vyznali i ostatni programatori. A je zajimave, ze v pripade Javy vetsina programatoru (vcetne tech z Oraclu) konvence dodrzuje. Jenom tady pan autor ma nazvy trid zacinajici malym pismenem, atp.
PSS. no sorry ale používat JPA,JPA2( ve formě hibernate,eclipselink,openJPA) za mě připadá naprosto zbytečné pro něco tak triviálního jako je tento příklad. Kdyby bylo JDBC za nesmysl, tak by se už zrušilo.
Nikdo tu nechce, aby se pouzivalo ORM, ale autor je takove prase, ze neni schopen ani poradne pouzivat to JDBC a to je vec, ktera mi vadi.
PSSS. a to nejdůležitější na konec : pokud mu to funguje bez chyb pak je program v pořádku.
Takhle se opravdu neprogramuje. V pripade programovani jsou dulezite i dalsi aspekty, jako je efektivni vyuziti systemovych prostredku, udrzovatelnost a srozumitelnost kodu, jeho rozsiritelnost, atd. To vyse zmineny tutorial nenaplnuje ani v nejmensim. Kvuli lidem, kteri programuji stylem "ono to funguje" pak ma Java reputaci jakou ma. Casto slychavam, jak je Java pomala a zere spoustu pameti. Ale v drtive vetsine za to nemuze Java (jako jazyk ci platforma), ale muzou za to programatori, kteri progamuji stylem: "vsak to nejak funguje".
LŽU? konvence např. = Eclipse v projektu nevyhodí žadný warning, pouze pri vzniku třidy upozorní ze dle konvence je classy maji začínat velkým písmenem.
public class ahoj {
public static void TestovaciMEtoda(){
System.out.println("Ahoj Svete 2");
}
public static void main(String [] args){
System.out.println("Ahoj Svete 1");
TestovaciMEtoda();
}
}
Jsou to jenom doporučení.
"V pripade programovani jsou dulezite i dalsi aspekty" - to je jasné, ale zrovna v tomto uvedeném příkladě zde na rootu jsou naprosto nepodstatné. např. jestli mu connection zabere 0,001 sec nebo 0,01 sec nebo 0,1 sec je z pohledu uživatele naprosto nepozorovatelné. Nejedná se o serverovou část na kterou bude připojenom jednotky,desítky, stovky tisíc uživatelů ale jednoduchou desktopovou aplikaci pro 1 usera.
Přeci už na začátku tohoto seriálu všem bylo jasné jak to bude seriál kvalitativně probíhat a jak to bude asi vyřešeno. Překvapujete mě že to prostě pořád řešíte. Buďte rádi že tu jsou aspoň informace pro začátečníky, a že s toho odnesou nevhodné návyky? Nikdo, vám nebrání vydat knihu(papír,digital) či stvořit web kde se o své zkušenosti s příklady můžete podělit. Éra komošů padla, což znamená že pokud se o něco nepostaráte sami pak to nikdo za vás neudělá.
Ja ako Java zaciatocnik, ale skuseny programator v inych jazykoch, pracujuci v timoch programatorov mozem za seba povedat, ze tento tutorial mi je uplne na nic.
Prave vdaka jeho neodbornosti.
Neviem preco ma byt problem ucit zaciatocnikov veci spravne uz od uplneho zaciatku. Ja sa tomuto tutorialu vyhybam prave kvoli tomu, lebo z diskusii vidim, ze by ma naucil zlym navykom. Naucil by ma veci, ktore by som sa musel potom ucit odznova, pretoze by som ich bol nauceny zle a moj kod by stal za figu.
Ak si skutocne myslite, ze toto je dobry sposob ako ucit zaciatocnikov, tak potom Vam zelam vela stastia a velmi vela casu pri praci s nimi a s ich kodom. Casu preto, lebo Vas v praci budu velmi zdrzovat.
@technomaniak: prajem svetu aby s vami nikdy nemusel spolupracovat, ked vami vygrcany kod povazujete za spravny lebo vam kompilator nevyhodil cerveny error a vas program bezal tri minuty
co sa tyka serialu: vytky su preto ze davam nadej ze sa to zlepsi alebo sa autor zamysli
@technomaniak: neviete o com hovorite
oficialne java konvencie, este z cias Sunu,
http://www.oracle.com/technetwork/java/index-135089.html
verim ze pisete zdrojak celeho projektu do jedneho suboru na jeden riadok a kompilator vam to zozere a program bezi a vy mozete spokojne spat.
ale ked to ucite (!) tak ze este aj ide vam vynada dialog vytvarania triedy tak je to smutne
navyse vase IDE vam navyse bud sformatuje kod pri ukladani do normalnej podoby alebo si zapnete checkstyle alebo nieco podobne a ten vas vyprudi.
dalej: neviem kto nieco hovoril o jpa a a pod. ale v kazdom normalnom projekte co som videl mali nejaku jdbc nadstavbu.
o zruseni jdbc ste totalne mimo: java api nikdy nezrusi. a uz urcite nie jedine api ktore v standardnej kniznici je. preto tie jdbc nadstavby.
vase posledne PSSS nemozete absolutne mysliet vazne, jedine ze ste v zivote nerobili na spolocnom projekte
Problém je, že obsah celého seriálu je už hotový. Začátečník se v tom bohužel podle mě nemá šancí vyznat, protože tam je spojeno příliš mnoho věcí naráz (sql, java, postgres). A pokud se v tom začátečník nevyzná, nedokáže ani odlišit, co je navrženo v rámci zjednodušení prasácky a co tedy bude potřeba později refaktorovat. Prasečinky nevadí, pokud o nich vím a nedovolím, aby působily neplechu (čili je třeba nenasadím na produkci). Otázka zní, zda to dokáže odlišit sám autor :-)
Upřímně, tohle je prostě prasácký kód. V rámci zjednodušení bych si například představoval zpracování výjimky pomocí metody printStatckTrace(). Ale volat getMessage() a nijak nezpracovávat výsledek? To je tam proto, aby catch blok nebyl prázdný? Nějaké metody se jmenují anglicky, nějaké česky. Formátování taky hrůza.
Tenhle kód je ukázka jak v Javě (a potažmo ani v jiných jazycích) nepsat. Co se týče JavyFX, tak se ukázalo pár widgetů, fxml a tím to hasne. A pak se řeší čtení dat z databáze, což nemá s JavouFX nic společného. A co třeba trochu probrat observable implementace v JavěFX.
Doufám, že se podle tohoto seriálu nikdo učit nebude, protože mu to buď znechutí Javu (anebo celé programování) anebo se podle něj naučí hromadu zlozvyků díky kterým bude špatným programátorem.
Presne tak, serial je roztahany a off topic.
Autor mal iba ukazat ako sa robi GUI v JavaFX - od najednoduchsich prikladov po zlozitejsie.
Na zaciatku tam v prvych dieloch instaloval asi najkomplikovanejsie IDE ake existuje a opisoval na desiatkach obrazkov naco treba kliknut a teraz tam iba elaboruje s databazovym systemom.
Mohol sa zaobist bez databazy alebo ak ju potreboval, mohol zobrat nieco jednoduche - napr. SQLite - co znamena stiahnut jeden jar-file a nemusel sa rozpisovat o PG.