JDBC (Java Database Connectivity) es la API estándar de Java para conectar aplicaciones con bases de datos relacionales. Existe desde Java 1.1 (1997) y sigue siendo la base de todos los frameworks de persistencia Java: Hibernate, Spring Data JPA, MyBatis y jOOQ usan JDBC por debajo.
En 2026, la versión actual es JDBC 4.3, incluida en Java 8+. Las mejoras recientes son incrementales: mejor integración con java.time, sharding, mejorado soporte de Ref y Blob, y RowSet independiente del servidor. La API fundamental lleva décadas sin cambiar, lo que hace que el conocimiento adquirido aquí sea duradero.
¿Cuándo usar JDBC directamente y cuándo usar un ORM?
- JDBC directo: aplicaciones con consultas complejas y optimizadas, operaciones masivas (batch insert), control total sobre el SQL, microservicios ligeros sin overhead de Hibernate.
- JPA/Hibernate: CRUD estándar, mapeo objeto-relacional, cuando la productividad importa más que el control fino del SQL.
- jOOQ: el mejor punto intermedio: SQL type-safe generado a partir del esquema real, sin "magia" de ORM.
Este tutorial cubre JDBC con buenas prácticas modernas: pool de conexiones con HikariCP, PreparedStatement, transacciones y el patrón DAO.
Dependencias Maven
<!-- Driver MySQL (ajusta para PostgreSQL, MariaDB, etc.) -->
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>9.0.0</version>
</dependency>
<!-- Pool de conexiones HikariCP (recomendado) -->
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>5.1.0</version>
</dependency>
Drivers disponibles para los principales SGBD
- MySQL / MariaDB:
com.mysql:mysql-connector-j:9.0.0/org.mariadb.jdbc:mariadb-java-client:3.4.0 - PostgreSQL:
org.postgresql:postgresql:42.7.3 - SQLite:
org.xerial:sqlite-jdbc:3.46.0.0 - Oracle:
com.oracle.database.jdbc:ojdbc11:21.15.0.0.1 - SQL Server:
com.microsoft.sqlserver:mssql-jdbc:12.8.0.jre11 - H2 (en memoria, tests):
com.h2database:h2:2.3.232
