0% encontró este documento útil (0 votos)
34 vistas5 páginas

Api JDBC

JDBC (Java Database Connectivity) es una API que permite la conexión y manipulación de bases de datos relacionales en Java, proporcionando interfaces y clases para interactuar con diferentes sistemas de bases de datos. Incluye componentes como DriverManager, Connection, Statement, PreparedStatement, CallableStatement y ResultSet, y cuatro tipos de controladores. Para mejorar el rendimiento, se recomienda el uso de un pool de conexiones, como HikariCP, que permite reutilizar conexiones abiertas.

Cargado por

ezequiel correa
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
34 vistas5 páginas

Api JDBC

JDBC (Java Database Connectivity) es una API que permite la conexión y manipulación de bases de datos relacionales en Java, proporcionando interfaces y clases para interactuar con diferentes sistemas de bases de datos. Incluye componentes como DriverManager, Connection, Statement, PreparedStatement, CallableStatement y ResultSet, y cuatro tipos de controladores. Para mejorar el rendimiento, se recomienda el uso de un pool de conexiones, como HikariCP, que permite reutilizar conexiones abiertas.

Cargado por

ezequiel correa
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Materia: Programación III

Profesor: Mango Eduardo

Universidad Tecnológica Nacional

API JDBC
Conexión a bases de datos

1. Introducción a JDBC
JDBC (Java Database Connectivity) es una API de Java que permite la conexión y
manipulación de bases de datos relacionales. JDBC proporciona un conjunto de interfaces y
clases para interactuar con bases de datos de manera uniforme, independientemente del
proveedor del sistema de base de datos.

2. Componentes Principales de JDBC


1.​ DriverManager: Gestiona los drivers de bases de datos y establece conexiones.
2.​ Connection: Representa la conexión a la base de datos.
3.​ Statement: Permite ejecutar sentencias SQL estáticas.
4.​ PreparedStatement: Similar a Statement, pero precompilado para mayor eficiencia
y seguridad contra inyección SQL.
5.​ CallableStatement: Permite la ejecución de procedimientos almacenados en la
base de datos.
6.​ ResultSet: Representa el resultado de una consulta SQL y permite iterar sobre los
datos recuperados.

Existen cuatro tipos de controladores JDBC:

1.​ Driver JDBC-ODBC Bridge (Tipo 1): Usa ODBC para conectarse a la base de datos
a través de un puente entre JDBC y ODBC. Sin embargo, este enfoque introduce
una capa adicional de comunicación, lo que lo hace más lento y menos seguro.
Debido a estas limitaciones, ha sido marcado como obsoleto en versiones recientes
de Java.
2.​ Driver Nativo (Tipo 2): Utiliza librerías nativas del sistema operativo y del DBMS
para comunicarse con la base de datos. Este tipo de driver ofrece un mejor
rendimiento que el Tipo 1, pero requiere la instalación de librerías específicas en
cada cliente, lo que complica su portabilidad.
3.​ Driver de Protocolo de Red (Tipo 3): Se comunica con un servidor intermediario
(middleware), que a su vez se encarga de conectar con la base de datos. Este
enfoque facilita la conectividad en entornos distribuidos y permite mayor
escalabilidad, pero introduce una capa adicional de latencia debido a la
comunicación con el middleware.
4.​ Driver 100% Java (Tipo 4): Implementado completamente en Java, este driver se
conecta directamente a la base de datos a través del protocolo de red nativo del
DBMS. Es el más utilizado en aplicaciones modernas debido a su portabilidad,
rendimiento y facilidad de implementación sin necesidad de librerías externas.
3. Configuración Básica de JDBC
Ejemplo de conexión a una base de datos MySQL:

public class JDBCDemo {​


public static void main(String[] args) {​
String url = "jdbc:mysql://localhost:3306/mi_base";​
String usuario = "root";​
String contrasena = "password";​

try (Connection conexion = DriverManager.getConnection(url,
usuario, contrasena);​
Statement stmt = conexion.createStatement();​
ResultSet rs = stmt.executeQuery("SELECT * FROM usuarios"))
{​

while (rs.next()) {​
System.out.println("ID: " + rs.getInt("id") + " Nombre:
" + rs.getString("nombre"));​
}​

} catch (SQLException e) {​
e.printStackTrace();​
}​
}​
}

4. Uso de Statement, PreparedStatement y


CallableStatement
4.1 Statement

Se usa para ejecutar sentencias SQL estáticas.

Principales métodos:

●​ executeQuery(String sql): Ejecuta una consulta SELECT y devuelve un


ResultSet.
●​ executeUpdate(String sql): Ejecuta sentencias INSERT, UPDATE o DELETE
y devuelve el número de filas afectadas.
●​ execute(String sql): Ejecuta una consulta genérica y devuelve un booleano
indicando si hay un ResultSet.
Statement stmt = conexion.createStatement();​
ResultSet rs = stmt.executeQuery("SELECT * FROM usuarios");​
while (rs.next()) {​
System.out.println("ID: " + rs.getInt("id") + " Nombre: " +
rs.getString("nombre"));​
}

4.2 PreparedStatement

Se usa para consultas dinámicas y seguras contra inyección SQL.

Principales métodos:

●​ setInt(int parameterIndex, int value): Establece un valor entero en la


posición indicada.
●​ setString(int parameterIndex, String value): Establece un valor de
tipo String.
●​ executeQuery(): Ejecuta una consulta SELECT y devuelve un ResultSet.
●​ executeUpdate(): Ejecuta sentencias INSERT, UPDATE o DELETE.

String sql = "SELECT * FROM usuarios WHERE id = ?";​


PreparedStatement pstmt = conexion.prepareStatement(sql);​
pstmt.setInt(1, 1);​
ResultSet rs = pstmt.executeQuery();​
while (rs.next()) {​
System.out.println("ID: " + rs.getInt("id") + " Nombre: " +
rs.getString("nombre"));​
}

4.3 CallableStatement

Se usa para ejecutar procedimientos almacenados en la base de datos.

Principales métodos:

●​ setInt(int parameterIndex, int value): Establece un valor entero.


●​ setString(int parameterIndex, String value): Establece un valor String.
●​ registerOutParameter(int parameterIndex, int sqlType): Registra un
parámetro de salida.
●​ execute(): Ejecuta el procedimiento almacenado.
●​ getInt(int parameterIndex): Obtiene un valor de salida entero.
●​ getString(int parameterIndex): Obtiene un valor de salida String.
CallableStatement cstmt = conexion.prepareCall("{call
obtener_usuario(?)}");​
cstmt.setInt(1, 1);​
ResultSet rs = cstmt.executeQuery();​
while (rs.next()) {​
System.out.println("ID: " + rs.getInt("id") + " Nombre: " +
rs.getString("nombre"));​
}

5. Uso de ResultSet
El ResultSet permite iterar sobre los datos devueltos por una consulta SQL.

Principales métodos:

●​ next(): Mueve el cursor a la siguiente fila.


●​ getInt(String columnLabel): Obtiene un valor entero de una columna
específica.
●​ getString(String columnLabel): Obtiene un valor String.
●​ getBoolean(String columnLabel): Obtiene un valor booleano.

while (rs.next()) {​
int id = rs.getInt("id");​
String nombre = rs.getString("nombre");​
System.out.println("ID: " + id + ", Nombre: " + nombre);​
}

6. Pool de Conexiones y HikariCP


Las conexiones a bases de datos son costosas en términos de tiempo y recursos. Para
mejorar el rendimiento, se usa un pool de conexiones, que mantiene conexiones abiertas y
las reutiliza cuando son necesarias. HikariCP es una de las implementaciones más rápidas
y eficientes.

6.1 Configuración de HikariCP en un Proyecto Java

1.​ Agregar la dependencia en pom.xml (si usas Maven):

<dependency>​
<groupId>com.zaxxer</groupId>​
<artifactId>HikariCP</artifactId>​
<version>5.0.1</version>​
</dependency>
2.​ Configurar el pool de conexiones:

public class HikariCPDemo {​


public static void main(String[] args) {​
HikariConfig config = new HikariConfig();​
config.setJdbcUrl("jdbc:mysql://localhost:3306/mi_base");​
config.setUsername("root");​
config.setPassword("password");​
config.setMaximumPoolSize(10);​

HikariDataSource dataSource = new HikariDataSource(config);​

try (Connection conexion = dataSource.getConnection();​
Statement stmt = conexion.createStatement();​
ResultSet rs = stmt.executeQuery("SELECT * FROM usuarios"))
{​

while (rs.next()) {​
System.out.println("ID: " + rs.getInt("id") + " Nombre:
" + rs.getString("nombre"));​
}​

} catch (SQLException e) {​
e.printStackTrace();​
} finally {​
dataSource.close();​
}​
}​
}

7. Conclusión
JDBC es una herramienta fundamental para interactuar con bases de datos en Java. Sin
embargo, debido a la carga que implica la apertura y cierre de conexiones, es
recomendable utilizar un pool de conexiones como HikariCP para mejorar el rendimiento y
la escalabilidad de las aplicaciones.

También podría gustarte