Apunte 10 - JDBC (Java Database Connectivity)
Apunte 10 - JDBC (Java Database Connectivity)
md 9/1/2023
JDBC - API
API (Application Programming Interfaces)
Es un conjunto de definiciones y protocolos que se utiliza para desarrollar e integrar el software de las
aplicaciones, permitiendo la comunicación a través de un conjunto de reglas.
1 / 11
README.md 9/1/2023
JDBC - Implementación
JDBC Driver es un componente de software que habilita a la aplicación java a interactuar con la DB.
Tipo 1 - Bridge: Controladores que implementan la API JDBC como una asignación a otra API de
acceso a datos, como ODBC. El JDBC-ODBC Bridge es un ejemplo de un driver de Tipo 1.
Nota: El JDBC-ODBC Bridge debe considerarse solo si su DBMS no ofrece un controlador JDBC
solo para Java y como una solución de transición.
Tipo 2 - Native: Los controladores que se escriben en parte en el lenguaje de programación Java y en
parte en código nativo. Estos controladores utilizan una biblioteca de cliente nativa específica para el
origen de datos al que se conectan. El driver Oracle controlador del lado del cliente OCI (Oracle Call
Interface) de Oracle es un ejemplo de un driver Tipo 2.
Tipo 3 - Network: Controladores que utilizan un cliente Java puro y se comunican con un servidor
middleware mediante un protocolo independiente de la base de datos. El servidor middleware
entonces comunica las peticiones del cliente al origen de datos.
2 / 11
README.md 9/1/2023
Tipo 4 – Thin o Pure Java: Los controladores son Java puro e implementan el protocolo de red para
una fuente de datos específica. El cliente se conecta directamente al origen de datos. El driver Oracle
Thin es un ejemplo de driver Tipo 4.
1. Cargar el driver necesario para comprender el protocolo que usa la base de datos concreta
2. Establecer una conexión con la base de datos, normalmente a través de red
3. Enviar consultas SQL y procesar el resultado
4. Liberar los recursos al terminar
5. Manejar los errores que se puedan producir
1. Registrar driver
Antes de poder conectarse a la base de datos es necesario cargar el driver JDBC. Sólo hay que hacerlo una
única vez al comienzo de la aplicación:
Class.forName("com.mysql.jdbc.Driver");
Se puede elevar la excepción ClassNotFoundException si hay un error en el nombre del driver o si el fichero
.jar no está correctamente en el CLASSPATH o en el proyecto
Otra alternativa para lograr el mismo objetivo es utilizar el mecanismo que internamente usa la clase Driver,
esto es invocar el método registerDriver de la clase DriverManager.
3 / 11
README.md 9/1/2023
DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
Las bases de datos actúan como servidores y las aplicaciones como clientes que se comunican a través de la
red. Un objeto Connection representa una conexión física entre el cliente y el servidor. Para crear una
conexión se usa la clase DriverManager donde se especifica la URL, el nombre y la contraseña:
jdbc:mysql://\<host>:\<puerto>:\<instancia>
Por ejemplo:
jdbc:mysql://localhost:3306/miBD
4 / 11
README.md 9/1/2023
Cada objeto Connection representa una conexión física con la base de datos.
Se pueden especificar más propiedades además del usuario y la password al crear una conexión. Estas
propiedades se pueden especificar usando métodos getConnection(…) sobrecargados de la clase
DriverManager.
String url =
"jdbc:mysql://localhost:3306/sample?user=root&password=pass";
Connection c = DriverManager.getConnection(url);
3. Crear la sentencia
5 / 11
README.md 9/1/2023
Esta sentencia es la responsable de ejecutar las consultas a la DB. Una vez que tienes una conexión puedes
ejecutar sentencias SQL:
Uso de Statement
6 / 11
README.md 9/1/2023
7 / 11
README.md 9/1/2023
Cuando el ResultSet se encuentra en una fila concreta se pueden usar los métodos de acceso a las
columnas:
4. Liberar recursos
Cuando se termina de usar una Connection, un Statement o un ResultSet es necesario liberar los recursos
que necesitan.
8 / 11
README.md 9/1/2023
Puesto que la información de un ResultSet no se carga en memoria, existen conexiones de red abiertas.
Métodos close():
9 / 11
README.md 9/1/2023
Sentencias SQL
Con JDBC se pueden usar diferentes tipos de Statement:
PreparedStatement: Para ejecutar la mismas sentencia muchas veces (la “prepara”). Acepta
parámetros
10 / 11
README.md 9/1/2023
PreparedStatement ps = conn.prepareStatement(...);
CallableStatement s = conn.prepareCall(...);
Ejemplo JDBC
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
// Crear EntityManager
EntityManager em = emf.createEntityManager();
// Iniciar transacción
em.getTransaction().begin();
// Operación CRUD
MyEntity entity = new MyEntity();
entity.setName("Sample");
em.persist(entity);
// Commit
em.getTransaction().commit();
// Cerrar recursos
em.close();
emf.close();
}
}
Enlaces relacionados
https://www.xataka.com/basics/api-que-sirve
https://www.javatpoint.com/java-jdbc
https://dev.mysql.com/downloads/connector/j/
https://codigoxules.org/conectar-mysql-utilizando-driver-jdbc-java-mysql-jdbc/
11 / 11