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/