Sobes.tech
Junior

Od kojih komponenti se sastoji JDBC?

sobes.tech АИ

Одговор од АИ

JDBC (Java Database Connectivity) sastoji se od sledećih osnovnih komponenti:

  • JDBC API: Skup interfejsa i klasa napisanih u Javi, koji pružaju standardni način interakcije sa različitim bazama podataka. Ovaj API koriste programeri za pisanje koda.
  • Menadžer drajvera JDBC: Klasa koja upravlja različitim JDBC drajverima. Odgovorna je za učitavanje drajvera i obezbeđivanje instanci drajvera za uspostavljanje veze sa bazom podataka.
  • Drajver JDBC: Softver koji implementira interfejse JDBC API-ja za specifični sistem upravljanja bazama podataka (DBMS). Postoje različiti tipovi JDBC drajvera:
    • Tip 1 (JDBC-ODBC most drajver): Pretvara JDBC pozive u ODBC pozive. Zahteva instalaciju ODBC drajvera na klijentskoj strani. Zastareo.
    • Tip 2 (Native-API drajver): Pretvara JDBC pozive u pozive nativnog API-ja DBMS-a. Zahteva instalaciju nativnog koda DBMS-a na klijentskoj strani.
    • Tip 3 (Mrežni protokol drajver): Koristi posrednički server aplikacija za prevođenje JDBC poziva u protokol DBMS-a. Ne zahteva instalaciju nativnog koda na klijentu.
    • Tip 4 (Čisti Java drajver): Napisan u 100% Javi i direktno pretvara JDBC pozive u protokol DBMS-a. Najrašireniji tip.
  • Java aplikacija: Aplikacija napisana u Javi koja koristi JDBC API za povezivanje sa bazom podataka i izvršavanje operacija (DML, DDL).

Interakcija između komponenti odvija se na sledeći način:

  1. Java aplikacija koristi JDBC API za pozivanje metoda.
  2. Pozivi se prosleđuju u Menadžer drajvera JDBC.
  3. Menadžer drajvera pronalazi i učitava odgovarajući JDBC drajver za specificiranu bazu podataka.
  4. JDBC drajver direktno komunicira sa bazom podataka koristeći njen protokol ili nativni API (u zavisnosti od tipa drajvera).
  5. Rezultati upita ili informacije o greškama se vraćaju putem drajvera, Menadžera drajvera i JDBC API-ja nazad u Java aplikaciju.
// Primer korišćenja JDBC API-ja u Java aplikaciji
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.ResultSet;

public class JdbcExample {

    public static void main(String[] args) {
        Connection connection = null;
        Statement statement = null;
        ResultSet resultSet = null;

        try {
            // Učitavanje drajvera (opciono za savremene verzije Jave)
            // Class.forName("com.mysql.cj.jdbc.Driver");

            // Dobijanje veze putem DriverManager-a
            connection = DriverManager.getConnection(
                    "jdbc:mysql://localhost:3306/mydatabase", // URL baze podataka
                    "username", // Korisničko ime
                    "password" // Lozinka
            );

            // Kreiranje Statement-a za izvršavanje SQL upita
            statement = connection.createStatement();

            // Izvršavanje SELECT upita
            resultSet = statement.executeQuery("SELECT id, name FROM mytable");

            // Obrada rezultata
            while (resultSet.next()) {
                int id = resultSet.getInt("id");
                String name = resultSet.getString("name");
                System.out.println("ID: " + id + ", Ime: " + name);
            }

        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            // Zatvaranje resursa
            try {
                if (resultSet != null) resultSet.close();
                if (statement != null) statement.close();
                if (connection != null) connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}