JDBC illesztőprogramok betöltése
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 FOLYAMATOT1. 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ó