> For the complete documentation index, see [llms.txt](https://educacion.gitbook.io/programacion/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://educacion.gitbook.io/programacion/ud8-persistencia-en-bases-de-datos/jdbc.md).

# JDBC

**JDBC (Java Database Connectivity)** é unha API de Java que permite a comunicación entre aplicacións Java e bases de datos. Proporciona un conxunto de interfaces para interactuar con bases de datos relacionais.

JDBC funciona como unha ponte entre a aplicación Java e o motor de bases de datos, permitindo executar consultas SQL e recuperar resultados de forma programática.

JDBC segue unha arquitectura de 4 capas principais:

* **Aplicación Java**: Código escrito polo programador que usa a API JDBC.
* **API JDBC (`java.sql`** **e `javax.sql`)**: Conxunto interfaces para a comunicación coa base de datos.
* **Driver JDBC**: Biblioteca específica do provedor da base de datos que traduce as chamadas JDBC a comandos SQL nativos.
* **Base de datos**: O sistema de xestión de bases de datos que almacena e xestiona os datos.

```mermaid
graph TD
    subgraph "Aplicación Java"
        A[Código da aplicación<br/>que usa JDBC API]
    end

    subgraph "API JDBC"
        B[java.sql e javax.sql<br/>Interfaces e clases]
    end

    subgraph "Drivers JDBC"
        C1[Driver para MySQL]
        C2[Driver para PostgreSQL]
        C3[Driver para Oracle]
        C4[Driver para outros SGBD]
    end

    subgraph "Bases de Datos"
        D1[(MySQL<br/>Base de Datos)]
        D2[(PostgreSQL<br/>Base de Datos)]
        D3[(Oracle<br/>Base de Datos)]
        D4[(Outros SGBD<br/>Base de Datos)]
    end

    A -->|"usa"| B
    B -->|"chamadas a"| C1
    B -->|"chamadas a"| C2
    B -->|"chamadas a"| C3
    B -->|"chamadas a"| C4
    
    C1 -->|"traduce a SQL nativo"| D1
    C2 -->|"traduce a SQL nativo"| D2
    C3 -->|"traduce a SQL nativo"| D3
    C4 -->|"traduce a SQL nativo"| D4

    style A fill:#e1f5fe
    style B fill:#fff9c4
    style C1 fill:#f3e5f5
    style C2 fill:#f3e5f5
    style C3 fill:#f3e5f5
    style C4 fill:#f3e5f5
    style D1 fill:#c8e6c9
    style D2 fill:#c8e6c9
    style D3 fill:#c8e6c9
    style D4 fill:#c8e6c9
```

{% hint style="warning" %}
Unha **API (Application Programming Interface)** é unha interface que provee a definición de un conxunto de operacións que permite que componentes ou aplicacións traballen entre si mediante a definición de unha implementación concreta de ditas operacions (driver).&#x20;

Mais info: <https://es.wikipedia.org/wiki/API>
{% endhint %}

Esta arquitectura vainos permitir traballar coa mesma estructura de aplicación de forma independente a maneira a base de datos que imos empregar. O único compoñente que vai a ser diferente será o driver, que vai a ser exclusivo da base de datos concreta que queiramos empregar.

## Conectores e Drivers para bases de datos

<figure><img src="/files/t4UhLhqCa8jcCAD2ud2i" alt=""><figcaption></figcaption></figure>

Os conceptos de conector e driver nos escenarios das bases de datos empregane a menudo como sinonimos ainda que teñen significados lixeiramente diferentes:

* **Conector:** Fai referencia a API que facilita a comunicación entre o SGBD e unha aplicación concreta. Adoitan contar con interfaces que permiten alomenos o seguinte:
  * Conexión a unha BBDD
  * Definición e execución de unha consulta
  * Procesamento dos resultados da consulta
  * Xestión das transaccións na base de datos
* **Driver:** Fai referencia a un componente (pode ser un ficheiro .jar), que implementa todas as interfaces de un conector para un SGBD concreto. O fabricante de cada base de datos adoita ser o encargado de preparar os drivers de conectividade.

De esta forma, é moi sinxelo escribir aplicacións que permitan a reutilización de código. No caso de querer realizar unha migración de sistema xestor de base de datos, unicamente será necesario modificar o driver empregado, sen tocar ningunha liña de código.

{% hint style="warning" %}
**Na actualidade e posible atopar un driver JDBC para practicamente calquer SGBD existente**
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://educacion.gitbook.io/programacion/ud8-persistencia-en-bases-de-datos/jdbc.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
