V povodnej otazke som zabudol dolezitu vec: primarne
ma zaujima priklad trivialnych aplikacii, teda tych, ktore
sa vyskytuju v tutorialoch.

V nich nevidim rozdiel medzi Class.forName a new Driver().
Podla toho, co pisete, oba napevno zadrotuju ovladac
do aplikacie.

Ak to zosumarizujem:
* Class.forName umoznuje natiahnut nazov triedy z konfiguracie.
* new Driver() odbremenuje zaciatocnika od odchytu vynimky
* oba su inak funkcne ekvivalentne.

Ad DataSource:

DataSource dataSource = new MySqlDataSource()
Connection con = dataSource.getConnection(...)

Toto rovnako zadrotuje ovladac do aplikacie, ale pre pripady
trivialnych aplikacii a ukazok mi to pride ako najschodnejsi priklad.

(Prirodzene, ze v springovskych aplikaciach vacsinou
ani nevieme, ze existuje nejaky Connection a pod., pretoze
SimpeJdbcTemplate je naozaj super vec. Ale niekedy treba
ludi uviest do problematiky JDBC aspon v naznakoch.)

Spomenul som si este, ze v Jave 6 je uz automaticke
nacitavanie ovladacov cez META-INF/services, ale toto
zrejme este dlho nebude mat podporu medzi vyrobcami.


On Thu, 02 Apr 2009 09:18:30 +0200, Martin Kuba <[email protected]> wrote:

Ahoj ve spolek,

ještě bych k tématu poznamenal, že používání DriverManager je od Javy 1.4 zastaralé, viz
http://java.sun.com/javase/6/docs/api/java/sql/DriverManager.html

 The DataSource interface, new in the JDBC 2.0 API, provides another way
to connect to a data source. The use of a DataSource object is the preferred
 means of connecting to a data source.

Problém s DataSource trochu je, že v JRE není jeho implementace,
tu má dodat výrobce JDBC ovladače.

Jako optimální se mi nyní jeví použít pro přístup k databázi Spring,
protože ten obsahuje různé implementace DataSource, zejména
org.springframework.jdbc.datasource.DriverManagerDataSource,
a tudíž můžu stejný kód používající DataSource použít
jak v desktopové aplikaci bez connection poolingu, tak ve webové aplikaci
s connection poolingem, jenom v konfiguraci měním implementaci DataSource.

S použitím třídy SimpleJdbcTemplate je pak práce s JDBC opravdu
příjemná, mohu doporučit. Vyráběl jsem k tomu onehdy návod, kdyby to někoho
zajímalo, je tady: http://kore.fi.muni.cz:5080/wiki/index.php/Spring_JDBC

Makub


Zdenek Tronicek napsal(a):
Dobry den,

presne tak. Kdyz napisete do kodu new MyDriver();, tak svazete aplikaci
s konkretnim driverem. Proto se ustalila konvence, ze driver ma staticky
inicializator, ktery jej zaregistruje u DriverManager:

public class MyDriver implements Driver {

    static {
        DriverManager.registerDriver(new MyDriver());
    }
    ...
}

Pak staci natahnout tridu driveru do pameti. Bud pres Class.forName()
nebo nastavenim property jdbc.drivers na prikazove radce.

Z.T.





--
Using Opera's revolutionary e-mail client: http://www.opera.com/mail/

Odpovedet emailem