Sobes.tech
Junior

Z akých komponentov sa skladá JDBC?

sobes.tech AI

Odpoveď od AI

JDBC (Java Database Connectivity) pozostáva z nasledujúcich hlavných komponentov:

  • JDBC API: Súbor rozhraní a tried napísaných v Jave, ktoré poskytujú štandardný spôsob interakcie s rôznymi databázami. Tento API používajú vývojári na písanie kódu.
  • Správca ovládačov JDBC: Trieda, ktorá spravuje rôzne ovládače JDBC. Je zodpovedná za načítanie ovládačov a poskytovanie inštancií ovládača na nadviazanie spojenia s databázou.
  • Ovládač JDBC: Softvér, ktorý implementuje rozhrania API JDBC pre konkrétny systém správy databáz (DBMS). Existujú rôzne typy ovládačov JDBC:
    • Typ 1 (JDBC-ODBC most): Prevod volaní JDBC na volania ODBC. Vyžaduje inštaláciu ODBC ovládača na strane klienta. Zastaralý.
    • Typ 2 (Native-API ovládač): Prevod volaní JDBC na volania nativného API DBMS. Vyžaduje inštaláciu nativneho kódu DBMS na strane klienta.
    • Typ 3 (Sieťový protokol ovládač): Používa sprostredkovateľský server aplikácií na preklad volaní JDBC do protokolu DBMS. Nevyžaduje inštaláciu nativneho kódu na klientovi.
    • Typ 4 (Čistý Java ovládač): Napísaný úplne v Jave a priamo prekladá volania JDBC do protokolu DBMS. Najrozšírenejší typ.
  • Java aplikácia: Aplikácia napísaná v Jave, ktorá používa JDBC API na pripojenie k databáze a vykonávanie operácií (DML, DDL).

Interakcia medzi komponentmi prebieha nasledovne:

  1. Java aplikácia používa JDBC API na volanie metód.
  2. Volania sú odovzdávané správcu ovládačov JDBC.
  3. Správca ovládačov nájde a načíta príslušný ovládač JDBC pre špecifikovanú databázu.
  4. Ovládač JDBC priamo komunikuje s databázou pomocou jej protokolu alebo nativného API (v závislosti od typu ovládača).
  5. Výsledky dotazov alebo informácie o chybách sú vrátené cez ovládač, správcu ovládačov a JDBC API späť do Java aplikácie.
// Príklad použitia JDBC API v Java aplikácii
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 {
            // Načítanie ovládača (voliteľné pre moderné verzie Javy)
            // Class.forName("com.mysql.cj.jdbc.Driver");

            // Získanie spojenia cez DriverManager
            connection = DriverManager.getConnection(
                    "jdbc:mysql://localhost:3306/mydatabase", // URL databázy
                    "username", // Používateľské meno
                    "password" // Heslo
            );

            // Vytvorenie Statementu na vykonanie SQL dopytov
            statement = connection.createStatement();

            // Vykonanie SELECT dopytu
            resultSet = statement.executeQuery("SELECT id, name FROM mytable");

            // Spracovanie výsledkov
            while (resultSet.next()) {
                int id = resultSet.getInt("id");
                String name = resultSet.getString("name");
                System.out.println("ID: " + id + ", Meno: " + name);
            }

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