Inicializacia JDBC ovladaca
Robert Novotny
robert.novotny na upjs.sk
Čtvrtek Duben 2 09:43:30 CEST 2009
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 <makub na ics.muni.cz> 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/
Další informace o konferenci Konference