Učitavanje JDBC upravljačkih programa

Java Top

Upravo sam najavio novo Uči proljeće tečaj, usredotočen na osnove Spring 5 i Spring Boot 2:

>> PROVJERITE TEČAJ

1. Uvod

JDBC je skup specifikacija koji definiraju API i SPI dijelove ugovora za Java Database Connectivity. Standard definira apstrakciju upravljačkog programa JDBC kao primarnu ulaznu točku za interakciju s bazom podataka.

U ovom ćemo uputstvu pogledati neke od osnovnih koraka potrebnih za učitavanje JDBC upravljačkih programa.

2. JDBC upravljački programi

Da bismo se povezali s bazom podataka, moramo dobiti instancu JDBC upravljačkog programa.

Možemo ga dobiti putem DriverManager specificiranjem niza veze JDBC URL-a. Takav URL sadrži vrstu mehanizma baze podataka, ime baze podataka, ime hosta i port, kao i ostale parametre veze koji su specifični za dobavljača baze podataka.

Korištenjem niza veze možemo dobiti objekt veze baze podataka, koji je temeljna jedinica komunikacije s bazom podataka u JDBC:

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

Kako upravitelj upravljačkih programa zna koji upravljački program treba koristiti ako je jedina naznaka navedeni URL?

Na putu predavanja može biti mnogo JDBC pokretača, pa mora postojati način da se svaki upravljački program jedinstveno razlikuje.

3. Pristup nasljeđivanju

Prije JDBC verzije 4 i Jave SE 1.6, u JVM nije postojao generički mehanizam koji bi omogućio automatsko otkrivanje i registraciju usluga. Zbog toga je bio potreban ručni korak za učitavanje klase JDBC upravljačkog programa po imenu:

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

Proces učitavanja klase pokreće statičku rutinu inicijalizacije koja registrira instancu upravljačkog programa s DriverManager i povezuje ovu klasu s identifikatorom mehanizma baze podataka, kao što je proročište ili postgres.

Nakon završetka registracije, ovaj identifikator možemo koristiti unutar JDBC URL-a kao jdbc: oracle.

Tipična rutina registracije vozača instancirat će instancu upravljačkog programa i proslijediti je na DriverManager.registerDriver metoda:

javni statički void register () baca SQLException {if (isRegistered ()) {throw new IllegalStateException ("Vozač je već registriran. Može se registrirati samo jednom."); } else {Vozač registeredDriver = novi upravljački program (); DriverManager.registerDriver (registeredDriver); Driver.registeredDriver = registrirani vozač; }}

Gornji primjer prikazuje registraciju Postgres JDBC upravljačkog programa s DriverManager. Pokreće ga JVM kao dio statičkog inicijalizatora.

Ovaj je korak moguće djelomično automatizirati čak i s naslijeđenim pristupom postavljanjem jdbc.drivers svojstvo sustava:

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

Kad je navedeno svojstvo, upravitelj upravljačkim programima automatski će pokušati učitati navedeni JDBC upravljački program.

4. Pristup JDBC 4

Problem automatsko otkrivanje usluge riješeno je Javom 1.6 i mehanizmom davatelja usluga. Pružateljima usluga omogućuje prijavljivanje svojih usluga stavljanjem pod META-INF / usluge unutar JAR datoteke koja sadrži usluge.

Ovaj mehanizam automatski registrira upravljački program tako da ručni korak za učitavanje klase više nije potreban. Međutim, čak i ako postoji davatelj usluga, ručno učitavanje klase neće uzrokovati kvar. Potpuno je legalno pozivati ​​se na učitavanje upravljačkih programa izričito s nedavnim JVM-ovima i JDBC 4 upravljačkim programima.

Specifikacija davatelja usluga jednostavno zamjenjuje ručno učitavanje klasa deklarativnim pristupom. Na primjer, PostgreSQL JDBC pokretački program ima jednu datoteku pod META-INF / usluge /. Naziv datoteke je java.sql.Driver (što je dobro uspostavljena konvencija za JDBC upravljačke programe). Sadrži potpuno kvalificirano ime klase JDBC upravljačkog programa, što je u ovom slučaju org.postgresql.Driver.

5. Zaključak

U ovom smo članku pregledali osnovne koncepte oko JDBC-a, kao i razne metode za učitavanje JDBC pokretačkih programa, s objašnjenjem svakog pristupa.

Kao i obično, cjeloviti izvorni kôd članka dostupan je na GitHubu.

Dno Java

Upravo sam najavio novo Uči proljeće tečaj, usredotočen na osnove Spring 5 i Spring Boot 2:

>> PROVJERITE TEČAJ