Preguntas de la entrevista de JDBC (Java Database Connectivity)

  • Autor de la entrada:
  • Categoría de la entrada:Java
  • Comentarios de la entrada:Sin comentarios

P) ¿Qué es JDBC (Java Database Connectivity)?

JDBC es la conectividad de la base de datos de Java. Permite tener una única API para conectarse, manipular y recuperar información de múltiples bases de datos como MySQL, Oracle, DB2, etc.

P) ¿Qué es el controlador JDBC?

El controlador JDBC se utiliza para establecer una conexión con la base de datos, de modo que se puedan recuperar, actualizar y mantener las tablas de la base de datos mediante consultas SQL, una vez que la conexión se realiza mediante estos controladores.

P) ¿Cuáles son las diferencias entre los 4 tipos de controladores?

Comparación del tipo de controlador JDBCCategoríaTipo 1Tipo 2Tipo 3Tipo 4Descripción básicaJDBC a ODBC PuenteJDBC usando métodos nativosControladores de JDBC de software intermedioControlador Java puroRequiere instalación nativa en el clienteSíSíNoNoPlataforma cruzadaNoMayormenteSíSíSoporta características específicas de la base de datos, por ejemplo, OracleBlobNoSíUsualmenteNoRequiere servidor adicionalNoNoSíNoQ

) ¿Cuál es el tipo más rápido de controlador JDBC?

El tipo 4 (JDBC Net pure Java Driver

) es el controlador JDBC más rápido.

P) ¿El puente JDBC-ODBC es multi-hilo?

No. El Puente JDBC-ODBC no es compatible con el multihilo (ejecución simultánea de varios hilos). Utiliza la técnica de sincronización para serializar todas las llamadas que hace a ODBC. No obtendrán las ventajas del multihilo, sin embargo, aún puede enfrentar problemas de

bloqueo.

P) ¿Puede un Puente JDBC-ODBC soportar múltiples declaraciones abiertas concurrentes por conexión?

No. El Puente JDBC-ODBC sólo puede soportar un objeto

de declaración por conexión.

P) ¿Cuáles son los pasos necesarios para ejecutar una consulta en JDBC?

1) Crear una instancia de un controlador JDBC o cargar los controladores JDBC.

2) Registrar el controlador mediante la clase DriverManager

.

3) Establecer una conexión.

4) Crear la declaración o declaración preparada que se utilizará para ejecutar la consulta.

P) ¿Qué es la URL de una base de datos?

Una URL de base de datos (o URL de JDBC) es una forma independiente de la plataforma de abordar una base de datos. Un URL de base de datos/JDBC es de la forma

[code language=»java»]jdbc:[subprotocolo]:[nodo]/[databaseName][/code]

Si está accediendo a una base de datos llamada muestra en el servidor cpsingh.sys.com usando el subprotocolo myprot

, el URL de su base de datos podría ser:

[code language=»java»]jdbc:myprot: cpsingh.sys.com /sample[/code]

Si la base de datos reside en el mismo nodo de la computadora que el programa java, la parte del nombre del host y las correspondientes barras dobles de la jdbc pueden ser omitidas como se muestra a continuación –

[code language=»java»]jdbc:odbc:sample[/code]

Todos los URLs de bases de datos estándar deben tener el prefijo de la cadena jdbc

.

P) ¿Qué método de Class.forName ( ) hará?

Class.forName() carga la clase dinámicamente y devuelve el objeto de tipo class.

P) ¿Es obligatorio cerrar todos los ResultSets, Statements y Connections?

Sí. Cuando se utiliza JDBC en la aplicación se asignan recursos no sólo en el programa sino también en un servidor de base de datos. Si no se cierran correctamente las Declaraciones (y las Declaraciones Preparadas y las Declaraciones Llamables), los Conjuntos de Resultados y las Conexiones pueden causar todos los siguientes problemas

– Se agotarán las conexiones que se pueden abrir o utilizar

– No podrá crear ningún nuevo conjunto de resultados

– No podrá ejecutar ninguna consulta de ningún tipo

– Su programa se volverá muy lento

– El servidor de la base de datos se vuelve muy lento

– Su programa se bloqueará

– El servidor de la base de datos se bloqueará

Es aconsejable que siempre se cierren todos los recursos del JDBC que se obtengan en el orden inverso al que se obtuvieron para evitar estos problemas.

P) ¿Puedo poner ResultSet, Statements y Connections a nulo en lugar de cerrarlos?

No. Poner las referencias a nulo no tiene el mismo resultado que llamar a cerrar los objetos. Este tipo de Códigos estarán filtrando recursos en el servidor de la base de datos y pueden causar problemas importantes.

También puede crear varios problemas para la puesta en común de conexiones.

P) ¿Cuál se puede utilizar para suministrar los parámetros de consulta en tiempo de ejecución? ¿Expediente O Expediente Preparado?

Utilizando PreparedStatement, puede pasar los parámetros en el momento de la ejecución (tiempo de ejecución).

P) ¿Cuál es la diferencia entre un Statement y un PreparedStatement?

La mayoría de las bases de datos relacionales manejan una consulta JDBC / SQL en cuatro pasos:

i) Analizar la consulta SQL entrante.
ii) Compilar la consulta SQL.
iii) Optimización de la consulta.
iv) Ejecutar la consulta optimizada para obtener y actualizar los datos para una condición dada.

Declaración: Siempre sigue las cuatro declaraciones anteriores para cada consulta SQL.
Declaración Preparada: Pre-ejecuta los tres primeros pasos, por lo que en caso de declaración preparada la optimización se realiza inmediatamente.

P) ¿Cómo saber cuántas filas hay en un ResultSet?

Hay tres maneras de saber el número de filas en el ResultSet –
1) Utilice la selección de conteo (*) en la parte superior del conjunto de resultados para obtener el número de registros.
2) Usar el siguiente trozo de código

[code language=»java»]
recuento de int = 0;
while (rs.next()) {
cuenta++;
}[/código]

3) Si está usando el controlador JDBC 3, puede usar el siguiente código

[code language=»java»]
rs.afterLast()
// para moverse al cursor en el último registro.
rs.getRow()
// para fecundar el número de la hilera de curret.
[/código]

Nota: Este ResultSet DEBE tener un cursor desplazable (ScrollSensitive o Insensitive). Además, no funcionará con un cursor de Sólo Avance.

P) ¿Puedo obtener un ResultSet nulo?

No, no es posible obtener un ResultSet nulo. Los controladores de la base de datos siempre devolverán un conjunto de resultados para una consulta. rs.next() puede utilizarse para ver si el siguiente registro contiene una fila o no, aquí rs es un objeto ResultSet.

P) ¿Cuál es la diferencia entre TYPE_SCROLL_INSENSITIVE y TYPE_SCROLL_SENSITIVE?

Ambos son para un ResultSet-
TYPE_SCROLL_INSENSITIVE: Si un ResultSet es TYPE_SCROLL_INSENSITIVE entonces no reflejaría los cambios realizados cuando está abierto.
TYPE_SCROLL_SENSITIVE: Si un ResultSet es TYPE_SCROLL_SENSITIVE entonces puede reflejar los cambios incluso si está abierto.

P) ¿Qué son los metadatos?

Metadatos: No es más que una definición de datos de datos.

En el JDBC, tenemos dos tipos de metadatos.

1) Metadatos para ResultSet: ResultSet se utiliza para obtener datos de las tablas y estos MetaDatos mantienen registros como cuántas filas se han obtenido, cuáles son los nombres de las columnas, etc.

2) MetaDatos para las conexiones de la base de datos: Tiene el registro de las conexiones de la base de datos.

P) ¿Qué es el savepoint?

Savepoint es casi similar a checkpoint. Se usa para rastrear el estado de una transacción, usando esta característica siempre podemos rastrear para ver dónde ocurrió el fallo y qué hay que hacer para arreglarlo.

P) ¿Por qué necesitamos usar BatchUpdates?

Las actualizaciones por lotes se utilizan para reducir las cargas de trabajo de la base de datos. Por ejemplo, si vas a insertar 120 registros en la base de datos, si lo haces utilizando 120 sentencias SQL de inserción, definitivamente consumiría más tiempo ya que para cada sentencia de inserción hay que establecer una conexión entre la base de datos y los recursos. Si lo realizas a través de un proceso por lotes, entonces las 120 instrucciones se insertarían en la tabla de una sola vez, lo que ahorraría tiempo y mejoraría la utilización de los recursos.

P) ¿Qué es una transacción?

Transacción: Una transacción es una unidad atómica de trabajo. Lo que significa que una transacción es una colección de varias tareas y si la tarea falla entonces el efecto será devuelto al estado anterior. En términos simples, una transacción se compromete sólo cuando todas las tareas especificadas en ella se ejecutan con éxito.

P) ¿Diferencia entre la transacción local y la global?

Transacción local: El alcance de una transacción local está limitado a una única JVM local (máquina virtual de Java). Puede ser implementado usando el API de JTA.

Transacción global: Su alcance no se limita a una sola JVM, sino que puede utilizar objetos de diferentes JVM-2. Puede ser implementado usando el protocolo TWO-PHASE-COMMIT.

P) ¿Cómo llamar a un procedimiento almacenado desde JDBC?

Los Procedimientos Almacenados pueden ser llamados usando el método preparado-llamado(), que devuelve un objeto CallableStatement.

[code language=»java»]
CallableStatement cstmt = con.prepareCall(«{nombre_del_procedimiento_de_llamado}»);
ResultSet res = cstmt.executeQuery();
[/code]

P) ¿Qué son las advertencias en JDBC? ¿Cómo recuperarlas?

SQLWarning es una subclase de la clase SQLException. Se utiliza para tratar con advertencias de acceso a la base de datos.
Excepción: Termina la ejecución de un programa.
Advertencia: A diferencia de las excepciones, no interfiere en la ejecución del programa. Sólo se utilizan para proporcionar una notificación al usuario.

por ejemplo:

[code language=»java»]

SQLWarning sqlw = stmt.getWarnings();
if (sqlw != null) {
mientras que (sqlw != null) {
System.out.println(«Mensaje de advertencia»): » + sqlw.getMessage());
System.out.println(«SQLState is: » + sqlw.getSQLState());
System.out.print(«El código de error es: «);
System.out.println(sqlw.getErrorCode());
sqlw = sqlw.getNextWarning();
}
}

[/código]

P) ¿Qué es el «Connection pooling»?

La puesta en común de conexiones es una técnica que mejora la utilización de los recursos compartidos. El propósito de esta técnica es servir a las múltiples solicitudes hechas por los clientes Aumenta el rendimiento de las aplicaciones Web mediante la reutilización de las conexiones activas de la base de datos en lugar de crear una nueva conexión para cada solicitud de los clientes.

P) ¿Cuál es la tarea del Connection Pool Manager?

El administrador del grupo de conexiones mantiene el grupo de conexiones abiertas de la base de datos.

Deja una respuesta