50 preguntas esenciales de la entrevista JDBC y respuestas de expertos (2026)

Prepararse para una entrevista JDBC exige un conocimiento profundo de la conectividad de bases de datos, el ajuste del rendimiento y las mejores prácticas de seguridad. Las siguientes 50 preguntas cubren conceptos básicos y escenarios del mundo real que los reclutadores priorizan.
👉 Descarga gratuita de PDF:Preguntas y respuestas de la entrevista JDBC
1) ¿Qué es JDBC y por qué es importante en las aplicaciones Java?
JDBC (Java Database Connectivity) es la API principal que permite a los programas Java interactuar con bases de datos relacionales. Estandariza la ejecución de SQL, el manejo de resultados y el control de transacciones, lo que permite a los desarrolladores escribir código independiente de la base de datos que puede cambiar entre MySQL, Oracle, PostgreSQL y otros con cambios mínimos.
2) ¿Cuáles son los cuatro tipos de controladores JDBC y sus diferencias clave?
- Tipo 1 (puente JDBC‑ODBC) :Puentea JDBC a ODBC; fácil de usar pero requiere ODBC y es lento.
- Tipo 2 (API nativa) :Llama a bibliotecas de bases de datos nativas; más rápido que Type1 pero dependiente de la plataforma.
- Tipo 3 (Protocolo de red) :Utiliza middleware para traducir llamadas; independiente de la base de datos pero agrega sobrecarga de red.
- Tipo 4 (controlador delgado) :Java puro, se comunica directamente con DB; máximo rendimiento y portabilidad. La mayoría de las aplicaciones modernas utilizan Type4.
3) Describe el ciclo de vida de un programa JDBC.
- Cargue el controlador:
Class.forName("com.mysql.cj.jdbc.Driver") - Establecer un
ConnectionvíaDriverManagero unDataSource. - Crear un
Statement,PreparedStatement, oCallableStatement. - Ejecutar el SQL (consulta, actualización o procedimiento).
- Procesar el
ResultSetsi corresponde. - Cerrar todos los recursos (prefiera
try‑with‑resources).
4) ¿Cuándo debería utilizar Statement, PreparedStatement o CallableStatement?
- Declaración :SQL estático; rápido para consultas puntuales.
- Declaración preparada :Consultas parametrizadas; protege contra la inyección de SQL y mejora el rendimiento mediante la precompilación.
- Declaración invocable :Procedimientos o funciones almacenados; encapsula lógica de base de datos compleja.
5) ¿Cómo se gestionan las transacciones en JDBC?
- Desactivar confirmación automática:
conn.setAutoCommit(false) - Ejecutar múltiples declaraciones.
- En caso de éxito,
conn.commit(); en caso de error,conn.rollback().
Utilice este patrón para operaciones atómicas como transferencias de fondos.
6) ¿Cuáles son las ventajas y desventajas de la agrupación de conexiones JDBC?
- Ventajas :Reutiliza conexiones, reduce la latencia y escala bajo carga.
- Desventajas :Requiere una configuración cuidadosa; Se pueden producir conexiones obsoletas si no se actualizan.
Marcos como HikariCP y Apache DBCP son estándares de la industria.
7) Distinga ejecutar(), ejecutarQuery() y ejecutarUpdate().
execute():Cualquier SQL; devuelvebooleanindicando si unResultSetse produce.executeQuery():declaraciones SELECT; devuelve unResultSet.executeUpdate():INSERTAR, ACTUALIZAR, BORRAR; devuelve el recuento de filas afectadas.
8) ¿Qué estrategias mejoran el rendimiento de JDBC?
- Usar
PreparedStatementpara precompilación. - Actualizaciones por lotes a través de
addBatch()/executeBatch(). - Agrupación de conexiones.
- Seleccione solo las columnas necesarias.
- Cierre los recursos rápidamente.
9) Explicar las actualizaciones por lotes en JDBC.
PreparedStatement ps = conn.prepareStatement("INSERT INTO student VALUES(?,?)");
for(int i=1;i<=1000;i++){
ps.setInt(1,i);
ps.setString(2,"Name"+i);
ps.addBatch();
}
ps.executeBatch(); Reduce los viajes de ida y vuelta y aumenta el rendimiento.
10) ¿Qué papel juega ResultSet?
ResultSet contiene los resultados de la consulta. Puede ser de solo avance, desplazable o actualizable dependiendo de los indicadores de creación.
11) Compare JDBC y ODBC.
- JDBC:Java puro, independiente de la plataforma, alto rendimiento.
- ODBC:basado en C, dependiente de la plataforma, requiere controladores nativos.
12) Identificar los componentes de la arquitectura JDBC.
- API JDBC (Conexión, Declaración, Conjunto de resultados).
- Administrador de controladores (registra controladores).
- Implementaciones de controladores (Tipo 1-4).
- Backend de la base de datos.
13) Explique ResultSetMetaData frente a DatabaseMetaData.
- ResultSetMetaData :Nombres de columnas, tipos de una consulta específica.
- Base de datosMetadatos :nombre del controlador, producto de base de datos, funciones SQL compatibles.
14) ¿Cómo utilizar los puntos de guardado?
conn.setAutoCommit(false);
Savepoint sp = conn.setSavepoint("sp1");
// operations
conn.rollback(sp); // partial rollback
conn.commit(); 15) Definir RowSet y sus variantes.
- JdbcRowSet – conectado.
- CachedRowSet:desconectado, serializable.
- WebRowSet:basado en XML.
- FilteredRowSet – ver con filtros.
- JoinRowSet:fusiona varios conjuntos de filas.
16) ¿Cómo maneja JDBC las excepciones de SQL?
SQLException proporciona getErrorCode() , getSQLState() y getMessage() . Siempre registre y revierta en caso de falla.
17) ¿Qué es el procesamiento por lotes?
Agrupe varias declaraciones DML en un solo viaje de ida y vuelta; utilizar addBatch() y executeBatch() .
18) Vuelva a enumerar los tipos de declaraciones.
- Declaración:SQL estático.
- PreparedStatement – parametrizado.
- CallableStatement:procedimientos almacenados.
19) Gestión eficiente de la conexión.
Prefiere DataSource con agrupación de conexiones. Utilice try‑with‑resources para limpieza automática.
20) Declaración JDBC frente a sesión de hibernación.
- JDBC:mapeo manual de bajo nivel.
- Hibernar:ORM, almacenamiento en caché, generación automática de SQL.
21) Recuperar claves generadas automáticamente.
PreparedStatement ps = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS); ps.executeUpdate(); ResultSet rs = ps.getGeneratedKeys();
22) Manejo de BLOB y CLOB.
- BLOB:secuencias binarias.
- CLOB – flujos de caracteres.
23) Hacer que ResultSet sea desplazable/actualizable.
Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
ResultSet rs = stmt.executeQuery("SELECT * FROM EMPLOYEE");
rs.absolute(3);
rs.updateString("name", "UpdatedName");
rs.updateRow(); 24) Fuente de datos frente a DriverManager.
- DriverManager:sencillo, sin agrupaciones.
- DataSource:búsqueda JNDI, agrupación y compatibilidad con XA.
25) Procesamiento por lotes con PreparedStatement.
for(int i=1;i<=5;i++){
ps.setInt(1,i);
ps.setString(2,"Student"+i);
ps.addBatch();
}
ps.executeBatch(); 26) Uso de DatabaseMetaData.
DatabaseMetaData dbmd = conn.getMetaData();
System.out.println("DB: " + dbmd.getDatabaseProductName()); 27) Resumen de variantes de ejecución.
- ejecutar() – booleano.
- executeQuery() – Conjunto de resultados.
- ejecutarActualización() – int.
28) Cerrar recursos JDBC.
try (Connection c = ds.getConnection();
Statement s = c.createStatement();
ResultSet rs = s.executeQuery("SELECT * FROM EMPLOYEE")) {
while(rs.next()){ /* process */ }
} 29) Optimizaciones de rendimiento comunes.
- Agrupación de conexiones.
- Declaración preparada sobre declaración.
- Actualizaciones por lotes.
- Ajuste del tamaño de recuperación.
- Recuperación selectiva de columnas.
30) Llamar a procedimientos almacenados.
CallableStatement cs = conn.prepareCall("{call getEmployeeSalary(?)}");
cs.setInt(1,101);
ResultSet rs = cs.executeQuery(); 31) Partes internas de la agrupación de conexiones JDBC.
Al inicio, un grupo crea un conjunto fijo de conexiones. Solicita tomar prestada una conexión; lo devuelve después de su uso, manteniendo los recursos en la memoria.
32) Configurar HikariCP.
HikariConfig cfg = new HikariConfig();
cfg.setJdbcUrl("jdbc:mysql://localhost:3306/testdb");
cfg.setUsername("root");
cfg.setPassword("pw");
cfg.setMaximumPoolSize(10);
HikariDataSource ds = new HikariDataSource(cfg); 33) DriverManager frente a DataSource.
- DriverManager:directo, sin agrupación.
- Fuente de datos:agrupada, XA, JNDI.
34) Causas comunes de "No se encontró ningún controlador adecuado".
- Falta el controlador JAR en classpath.
- URL de JDBC incorrecta.
- Falta
Class.forName()(anterior a Java9). - La versión del controlador y la base de datos no coinciden.
35) Prevenir la inyección de SQL.
- Utilice siempre
PreparedStatementcon parámetros. - Validar y desinfectar la entrada del usuario.
- Limitar los privilegios de la base de datos.
36) JDBC frente a ORM (Hibernación).
- JDBC:control preciso, mapeo manual, peso ligero.
- Hibernar:ORM automático, almacenamiento en caché, mayor curva de aprendizaje.
37) Registro de consultas SQL.
- Habilitar el registro de controladores (por ejemplo,
logger=com.mysql.cj.log.StandardLoggerde MySQL ). - Utilice P6Spy o datasource‑proxy para interceptar y registrar.
38) Multihilo seguro con JDBC.
- No compartir
Connectionobjetos a través de hilos. - Tomar prestada una conexión de un grupo por subproceso.
- Cierre recursos con try-with-resources.
39) JDBC en Spring/Spring Boot.
JdbcTemplate de primavera maneja texto repetitivo, traducción de excepciones y agrupación de conexiones automáticamente.
40) Estados de conexión JDBC.
- Inicializado → Abierto → En transacción → Comprometido/Revertido → Cerrado.
41) Resumen de tipos de controladores.
- Tipo 1:bajo rendimiento, requiere ODBC.
- Tipo 2:nativo, rendimiento medio.
- Tipo 3:middleware, rendimiento moderado.
- Type4:Java puro, mayor rendimiento.
42) Niveles de aislamiento de transacciones.
- READ_UNCOMMITTED:lecturas sucias.
- READ_COMMITTED:predeterminado, evita lecturas sucias.
- REPEATABLE_READ:evita lecturas no repetibles.
- SERIALIZABLE:aislamiento estricto, evita lecturas fantasma.
43) Transacciones distribuidas (XA).
- Usar
javax.sql.XADataSourcey un administrador de JTA (Atomikos, Bitronix, Spring). - La confirmación en dos fases coordina las confirmaciones en varias bases de datos.
44) Perfilado del rendimiento de JDBC.
- P6Spy, proxy de origen de datos para el registro de consultas.
- Java Flight Recorder / JVisualVM para uso de conexión.
- Planes de base de datos EXPLAIN para ajuste de consultas.
- Prometheus + Grafana para métricas.
45) Prevención de pérdidas de memoria JDBC.
- Cerrar siempre
ResultSet,Statement,Connectiona través de try‑with‑resources. - Configurar los tiempos de espera del grupo (maxIdleTime, maxLifetime).
- Evite mantener los ResultSets fuera del alcance.
46) JDBC para microservicios/nube.
- HikariCP para agrupación ligera.
- Sesiones JDBC sin estado.
- Leer réplicas, almacenamiento en caché (Redis).
- Disyuntores Resilience4j para conmutación por error de base de datos.
47) Manejo elegante de fallas de conexión.
for(int i=0;i<3;i++){
try(Connection c=ds.getConnection()){ break; }
catch(SQLTransientConnectionException e){ Thread.sleep(1000*(i+1)); }
} 48) Diferencias de confirmación, reversión y punto de guardado.
- Comprometerse – finaliza todos los cambios.
- Revertir – vuelve a la última confirmación.
- Punto de guardado – objetivo de reversión parcial.
49) Utilidad de los metadatos JDBC.
- Introspección dinámica de esquemas.
- Comprobaciones de capacidad de la base de datos.
- Herramientas para la generación de ORM.
50) Mejores prácticas para JDBC empresarial.
- Usar
DataSourcecon agrupación. - Prefiere
PreparedStatement. - Manejar transacciones con el aislamiento adecuado.
- Operaciones por lotes y paginación.
- Registrar y monitorear consultas.
- Maneje con elegancia las excepciones y los reintentos.
🔍 Principales preguntas de la entrevista de JDBC con escenarios del mundo real y respuestas estratégicas
A continuación se presentan 10 preguntas de la entrevista JDBC cuidadosamente elaboradas, con lo que los entrevistadores esperan y ejemplos sólidos de respuestas.
1) ¿Qué es JDBC y por qué es importante?
Respuesta esperada: JDBC es la API de Java para acceder a bases de datos; abstrae la ejecución de SQL, el manejo de resultados y las transacciones, lo que permite un código independiente de la base de datos.
2) Explique los tipos de controladores JDBC.
Respuesta esperada: Cuatro tipos:puente JDBC‑ODBC, API nativa, protocolo de red y controlador ligero. El tipo 4 es el más común hoy en día.
3) ¿Cómo se gestionan las conexiones de manera eficiente?
Respuesta esperada: Utilice grupos de conexiones como HikariCP; Evite abrir/cerrar conexiones por solicitud.
4) Distinguir declaración, declaración preparada y declaración invocable.
Respuesta esperada: Declaración – SQL estático; PreparedStatement:parametrizado, evita la inyección; CallableStatement – procedimientos almacenados.
5) Describe una optimización del rendimiento de JDBC que hayas realizado.
Respuesta esperada: Se reemplazó la concatenación de cadenas con PreparedStatement, se introdujo la agrupación y se utilizaron inserciones por lotes; Reducción del tiempo de respuesta en un 40 %.
6) ¿Cómo se previene la inyección de SQL?
Respuesta esperada: Utilice declaración preparada; validar la entrada; limitar los privilegios de la base de datos.
7) Solucionar un error de conexión JDBC.
Respuesta esperada: Verificar URL, credenciales, red, controlador jar; revisar registros; corregir el puerto mal configurado.
8) Gestionar transacciones en JDBC.
Respuesta esperada: Deshabilite la confirmación automática, realice operaciones, confirme o revierta según el resultado; garantiza el cumplimiento de ACID.
9) Resuelva un problema de base de datos desafiante con JDBC.
Respuesta esperada: Se implementó el procesamiento por lotes para inserciones a granel, lo que redujo el tiempo de minutos a segundos.
10) Priorice las mejoras de JDBC en plazos ajustados.
Respuesta esperada: Evalúe el impacto, comuníquese con claridad, aborde primero los elementos de alto impacto, colabore para cumplir el SLA.
Java
- Interfaz Java
- Clase de archivo Java
- Java ArrayDeque
- Operadores Java
- Las 25 preguntas y respuestas principales de la entrevista de Scala - Guía en PDF
- Java String termina con () método con ejemplo
- Cómo invertir una cadena en Java usando recursión
- Clasificación de selección en el programa Java con ejemplo
- Domine la impresión Java:uso de print(), println() y printf()
- Java BufferedReader:cómo leer un archivo en Java con un ejemplo
- Java - Genéricos