Sobes.tech
Junior

Millest koosneb JDBC?

sobes.tech AI

Vastus AI-lt

JDBC (Java Database Connectivity) koosneb järgmistest põhikomponentidest:

  • JDBC API: Java-s kirjutatud liidesed ja klassid, mis pakuvad standardset viisi erinevate andmebaasidega suhtlemiseks. Seda API-d kasutavad arendajad koodi kirjutamiseks:
  • JDBC Driver Manager: Klass, mis haldab erinevaid JDBC draivereid. See vastutab draiverite laadimise ja draiveri eksemplaride pakkumise eest andmebaasi ühenduse loomiseks:
  • JDBC Driver: Tarkvara, mis rakendab JDBC API liideseid konkreetse andmebaasisüsteemi (DBMS) jaoks. On olemas erinevat tüüpi JDBC draivereid:
    • Type 1 (JDBC-ODBC sild draiver): Muudab JDBC kutse ODBC kutseteks. Nõuab ODBC draiveri paigaldamist kliendi poolel. Vananenud:
    • Type 2 (Native-API draiver): Muudab JDBC kutse native API kutseteks. Nõuab native koodi paigaldamist kliendi poolel:
    • Type 3 (Võrgu-protokolli draiver): Kasutab vahendusteenust, mis tõlgib JDBC kutse andmebaasi protokolliks. Ei nõua native koodi paigaldamist kliendi poolel:
    • Type 4 (Puhas Java draiver): Kirjutatud 100% Java-s ja otse tõlgib JDBC kutse andmebaasi protokolliks. Kõige levinum:
  • Java rakendus: Java-s kirjutatud programm, mis kasutab JDBC API-d andmebaasi ühendamiseks ja operatsioonide (DML, DDL) tegemiseks:

Komponentide vaheline suhtlus toimub järgmiselt:

  1. Java rakendus kasutab JDBC API-d meetodite väljakutseteks:
  2. Väljakutsed edastatakse JDBC Driver Managerile:
  3. Driver Manager leiab ja laadib sobiva JDBC draiveri määratud andmebaasi jaoks:
  4. JDBC draiver suhtleb otse andmebaasiga, kasutades selle protokolli või native API-d (sõltuvalt draiveri tüübist):
  5. Tulemused või veateated tagastatakse draiveri, Driver Manageri ja JDBC API kaudu tagasi Java rakendusele:
// JDBC API kasutamise näide Java rakenduses
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 {
            // Draiveri laadimine (kaasaegsetes Java versioonides pole see kohustuslik)
            // Class.forName("com.mysql.cj.jdbc.Driver");

            // Ühenduse loomine Driver Manageri kaudu
            connection = DriverManager.getConnection(
                    "jdbc:mysql://localhost:3306/mydatabase", // Andmebaasi URL
                    "username", // Kasutajanimi
                    "password" // Parool
            );

            // Statementi loomine SQL-küsimuste täitmiseks
            statement = connection.createStatement();

            // SELECT-küsimuse täitmine
            resultSet = statement.executeQuery("SELECT id, name FROM mytable");

            // Tulemuste töötlemine
            while (resultSet.next()) {
                int id = resultSet.getInt("id");
                String name = resultSet.getString("name");
                System.out.println("ID: " + id + ", Name: " + name);
            }

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