JDBC illesztőprogramok betöltése

Java Top

Most jelentettem be az újat Tanulj tavaszt tanfolyam, amelynek középpontjában az 5. tavasz és a tavaszi bakancs 2 alapjai állnak:

>> ELLENŐRIZZE A FOLYAMATOT

1. Bemutatkozás

A JDBC a Java Database Connectivity szerződésének API és SPI részeit meghatározó specifikációk összessége. A szabvány meghatározza a JDBC illesztőprogram-absztrakciót, mint elsődleges belépési pontot egy adatbázissal való interakcióhoz.

Ebben az oktatóanyagban megnézzük a JDBC illesztőprogramok betöltéséhez szükséges alapvető lépéseket.

2. JDBC illesztőprogramok

Az adatbázishoz való csatlakozáshoz be kell szereznünk egy JDBC illesztőprogram példányát.

Megszerezhetjük a DriverManager a JDBC URL kapcsolati karakterlánc megadásával. Az ilyen URL tartalmazza az adatbázis-motor típusát, az adatbázis nevét, a hosztnevet és a portot, valamint az adatbázis-szállítóra jellemző egyéb kapcsolati paramétereket.

A kapcsolati karakterlánc segítségével megszerezhetünk egy adatbázis-kapcsolati objektumot, amely a JDBC-ben az adatbázissal való kommunikáció alapja:

Kapcsolat con = DriverManager.getConnection ("jdbc: postgresql: // localhost: 21500 / test? User = fred & password = titkos & ssl = true"); 

Honnan tudja az illesztőprogram-kezelő melyik illesztőprogramot használja, ha az egyetlen jelzés a megadott URL?

Lehet, hogy sok JDBC illesztőprogram van az osztályúton, ezért meg kell találni a módját annak, hogy minden vezetőt egyedileg meg lehessen különböztetni.

3. Örökölt megközelítés

A JDBC 4-es verziója és a Java SE 1.6 előtt nem volt olyan általános mechanizmus a JVM-ben, amely lehetővé tenné a szolgáltatások automatikus felfedezését és regisztrálását. Emiatt kézi lépésre volt szükség a JDBC illesztőprogram osztályának név szerinti betöltésére:

Class.forName ("oracle.jdbc.driver.OracleDriver");

Az osztálybetöltési folyamat egy statikus inicializálási rutint indít el, amely regisztrálja az illesztőprogram példányát a DriverManager és társítja ezt az osztályt az adatbázis-motor azonosítóval, például jóslat vagy postgres.

A regisztráció befejezése után ezt az azonosítót felhasználhatjuk a JDBC URL-en belül jdbc: orákulum.

Egy tipikus illesztőprogram-regisztrációs rutin példányosítja az illesztőprogram-példányt, és továbbítja azt a DriverManager.registerDriver módszer:

public static void register () dobja az SQLException-t {if (isRegistered ()) {dobja az új IllegalStateException-t ("Az illesztőprogram már regisztrált. Csak egyszer lehet regisztrálni."); } else {Illesztőprogram regisztráltDriver = új illesztőprogram (); DriverManager.registerDriver (registerDriver); Driver.registeredDriver = regisztráltDriver; }}

A fenti példa a Postgres JDBC illesztőprogram regisztrációját mutatja a DriverManager. A JVM váltja ki a statikus inicializáló részeként.

Ezt a lépést részben a régi megközelítéssel is lehet automatizálni a jdbc.drivers rendszer tulajdonság:

java -Djdbc.drivers = oracle.jdbc.driver.OracleDriver

Ennek a tulajdonságnak a megadásakor az illesztőprogram-kezelő automatikusan megpróbálja betölteni a megadott JDBC illesztőprogramot.

4. JDBC 4 megközelítés

A probléma az automatikus szolgáltatásfelfedezést a Java 1.6 és a szolgáltató mechanizmusa oldotta meg. Lehetővé teszi a szolgáltatók számára, hogy szolgáltatásaik alá helyezésével nyilatkozhassanak META-INF / szolgáltatások a szolgáltatásokat tartalmazó JAR fájlban.

Ez a mechanizmus automatikusan regisztrálja az illesztőprogramot, így az osztály betöltésére már nincs szükség kézi lépésre. Azonban a szolgáltató helyben is, a kézi osztálybetöltés nem okoz hibát. Teljesen legális az illesztőprogram-betöltést kifejezetten a legutóbbi JVM-ekkel és a JDBC 4-illesztőprogramokkal megalapozni.

A szolgáltató specifikációja egyszerűen helyettesíti a kézi osztálybetöltést egy deklaratív megközelítéssel. Például a PostgreSQL JDBC illesztőprogram egyetlen fájl alatt található META-INF / szolgáltatások /. A fájl neve: java.sql.Driver (ami jól megalapozott egyezmény a JDBC járművezetők számára). Ez tartalmazza a JDBC illesztőprogram teljes minősítésű osztálynevét, amely ebben az esetben az org.postgresql.Vezetõ.

5. Következtetés

Ebben a cikkben áttekintettük a JDBC körüli alapfogalmakat, valamint a JDBC meghajtók betöltésének különféle módszereit, az egyes megközelítések magyarázatával.

Szokás szerint a cikk teljes forráskódja elérhető a GitHubon.

Java alsó

Most jelentettem be az újat Tanulj tavaszt tanfolyam, amelynek középpontjában az 5. tavasz és a tavaszi bakancs 2 alapjai állnak:

>> ELLENŐRIZZE A FOLYAMATOT