Dobrý den,
měl bych několik poznámek:
1. relační DB je výhodné použít v systémech, které vyžadují spolehlivost, zachování konzistence dat, případně transakce s ACID vlastnostmi. Typickým příkladem pro nasazení relačních DB jsou například systémy pro správu financí, systémy vužívané ve státní správě (a mnoho jiných)
2. NoSQL DB je vhodné použít v případech kde výše zmíňené není potřeba. Výhodou NoSQL je větší volnost (většinou nemáte pevný datový model), dobrá škálovatelnost u většiny těchto systémů (ikdyž PG a Oracle to mají myslím také) a nižší režie u většiny operací než relační DB (protože nemusíte zajišťovat ACID) a často rychlejší vývoj.
3. Od Javy 6 není nutné volat Class.forName, pokud je driver rozumně napsaný, tak bude *.jar obsahovat informace pro class loader, který Vám driver registruje automaticky pokud máte *.jar na classpath viz. http://www.onjava.com/2006/08/02/jjdbc-4-enhancements-in-java-se-6.html
4. Chápu, že cílem tohoto příkladu je ukázat jak to všechno dát dohromady a co všechno je potřeba, ale bylo by vhodné poznamenat, že takto se to v praxi nedělá.
V praxi máme buď frameworky jako Spring, které spravují operace jako vytvoření / uzavření připojení + práce s dotazy. A když už nepoužíváme framework, tak se to minimálně nepíše do jedné metody. Pro účely tohoto příkladu je to v pořádku, ale jakmile začne kód růst, tak to bude velmi nepřehledné a pravděpodobně tam bude i spousta duplicitního kódu.
Ked mam pravdu povedat tak s tebou suhlasim. Clovek co cita tutorialy vsade vidi len taketo nacitavanie ale ako sa to ma, to nikto nikde nenapise (toto sa ale netyka len Javy). Potom sa ale nedivme ze to tak je. Skus sem prosim aspon postnut nejaky tutorial ktory ukazuje ako sa to ma robit spravne v Jave.
Pro spring bez nejakeho ORM treba http://www.tutorialspoint.com/spring/spring_jdbc_example.htm
Pak mas samozrejme moznost pouzit treba hibernate nebo jiny ORM framework.
Pokud te zajima jak to napsat v ciste jave "spravne" tak si nejsem jisty, ze takovy tutorial existuje, muzes se podivat do zdrojaku springu :). Ale prijde mi to jaka snaha o to znovu objevovat kolo.
Kdybych to psal od zacatku ja a nebyly by zadne frameworky, tak bych asi do jedne tridy zabalil ty try/catch veci, a pak te tride predaval objekty, ktere by reprezentovaly jednotlive dotazy s parametry, cele bych to zabalil do nejakeho DAO a zajistil bych ze se budou dat volat jen metody na DAO, aby treba nekoho nenapadlo vytvorit DB connection odnekud z GUI, pokud by to bylo na serveru, tak by samozrejme bylo potreba resit connection pool, thread safety atd.
Ale to radsi vemu nejaky framework nez abych to cele vymyslel znova a nasekal tam milion chyb.
Pokud bych měl potřebu napsat to v čisté Javě bez uvedených frameworků, tak bych použil JPA, které je součástí JEE.