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