Načítavajú sa ovládače JDBC

Java Top

Práve som oznámil nové Naučte sa jar kurz zameraný na základy jari 5 a Spring Boot 2:

>> SKONTROLUJTE KURZ

1. Úvod

JDBC je súbor špecifikácií definujúcich časti API a SPI zmluvy pre pripojenie databázy Java. Norma definuje abstrakciu ovládača JDBC ako primárny vstupný bod pre interakciu s databázou.

V tomto výučbe sa pozrieme na niektoré základné kroky potrebné na načítanie ovládačov JDBC.

2. Ovládače JDBC

Na pripojenie k databáze musíme dostať inštanciu ovládača JDBC.

Môžeme ju získať prostredníctvom DriverManager zadaním pripojovacieho reťazca JDBC URL. Takáto adresa URL obsahuje typ databázového stroja, názov databázy, názov hostiteľa a port, ako aj ďalšie parametre pripojenia, ktoré sú špecifické pre dodávateľa databázy.

Pomocou pripojovacieho reťazca môžeme získať objekt pripojenia k databáze, ktorý je základnou jednotkou komunikácie s databázou v JDBC:

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

Ako vie správca ovládača, ktorý ovládač má použiť, ak je jedinou indikáciou zadaná adresa URL?

Na triednej ceste môže byť veľa ovládačov JDBC, takže musí existovať spôsob, ako každého ovládača jedinečne odlíšiť.

3. Dedičný prístup

Pred JDBC verzie 4 a Java SE 1.6 neexistoval v JVM žiadny všeobecný mechanizmus, ktorý by umožňoval automatické objavovanie a registráciu služieb. Z tohto dôvodu bol na načítanie triedy ovládačov JDBC podľa názvu potrebný manuálny krok:

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

Proces načítania triedy spustí statickú inicializačnú rutinu, ktorá zaregistruje inštanciu ovládača s DriverManager a spája túto triedu s identifikátorom databázového stroja, ako je napr veštec alebo postgres.

Po dokončení registrácie môžeme tento identifikátor vo vnútri adresy JDBC použiť ako jdbc: orákulum.

Typická rutina registrácie ovládača vytvorí inštanciu ovládača a odovzdá ju DriverManager.registerDriver metóda:

public static void register () hodí SQLException {if (isRegistered ()) {throw new IllegalStateException ("Ovládač je už zaregistrovaný. Môže byť zaregistrovaný iba raz."); } else {Driver registeredDriver = new Driver (); DriverManager.registerDriver (registeredDriver); Driver.registeredDriver = registeredDriver; }}

Vyššie uvedený príklad ukazuje registráciu ovládača Postgres JDBC pomocou DriverManager. Spúšťa ho JVM ako súčasť statického inicializátora.

Tento krok je možné čiastočne automatizovať aj pri staršom prístupe nastavením jdbc.drivers vlastnosť systému:

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

Keď je zadaná táto vlastnosť, správca ovládačov sa automaticky pokúsi načítať uvedený ovládač JDBC.

4. Prístup JDBC 4

Problém automatické zisťovanie služieb bolo vyriešené pomocou Java 1.6 a mechanizmu poskytovateľa služieb. Umožňuje poskytovateľom služieb deklarovať svoje služby umiestnením pod META-INF / služby v súbore JAR obsahujúcom služby.

Tento mechanizmus automaticky zaregistruje vodiča, takže už nie je potrebný manuálny krok na načítanie triedy. Ručné načítanie triedy však ani po zavedení poskytovateľa služieb nespôsobí poruchu. Je úplne legálne vyvolať načítanie ovládača výslovne s nedávnymi ovládačmi JVM a JDBC 4.

Špecifikácia poskytovateľa služieb jednoducho nahrádza ručné načítanie triedy deklaratívnym prístupom. Napríklad ovládač PostgreSQL JDBC má jeden súbor pod META-INF / služby /. Názov súboru je java.sql.Driver (čo je pre vodičov JDBC ustálený dohovor). Obsahuje úplný názov triedy ovládača JDBC, ktorý v tomto prípade je org.postgresql.Driver.

5. Záver

V tomto článku sme preskúmali základné pojmy týkajúce sa JDBC, ako aj rôzne spôsoby načítania ovládačov JDBC s vysvetlením každého prístupu.

Kompletný zdrojový kód článku je ako obvykle k dispozícii na serveri GitHub.

Java dole

Práve som oznámil nové Naučte sa jar kurz zameraný na základy jari 5 a Spring Boot 2:

>> SKONTROLUJTE KURZ