Conexión a bases de datos: JDBC, transacciones ACID y herramientas ORM

InformáticaActualizado el 6,14 KB

Resumen

El documento explica cómo un software cliente se conecta a una base de datos mediante conectores como ODBC y JDBC, describe las clases esenciales de JDBC y sus pasos de operación. También trata la gestión de transacciones con propiedades ACID y los métodos de control de la interfaz Connection. Por último, presenta el mapeo objeto-relacional (ORM) y ejemplos de MyBatis y Hibernate.

Puntos clave

  • Un conector de BD facilita la comunicación entre el servidor de la base de datos y el software cliente.
  • ODBC es una API para acceder a SGBD a través de un driver que traduce las consultas; JDBC es el protocolo estándar de Java para conectarse a una BD.
  • Las clases clave de JDBC son Connection, Statement, PreparedStatement, CallableStatement y ResultSet.
  • Las propiedades ACID son atomicidad, consistencia, aislamiento y durabilidad.
  • Connection ofrece commit() para confirmar, rollback() para revertir y setAutoCommit(boolean) para confirmar automáticamente cada sentencia.
  • El ORM convierte automáticamente entre objetos y tablas, reduciendo el código necesario frente al SQL incrustado.

Ponte a prueba

Conectores de Bases de Datos: Fundamentos y Paradigmas

Comparativa de Modelos de Datos

  • Modelo Relacional: Todos los datos son representados en tuplas, agrupados en relaciones.
  • Modelo Objeto: Todos los datos son representados en objetos, que poseen atributos y métodos.

La Brecha Objeto-Relacional

Las diferencias entre estos paradigmas fuerzan el uso de código adicional para la comunicación entre ellos:

  • Clases $\rightarrow$ Tablas
  • Atributos $\rightarrow$ Columnas
  • Objetos $\rightarrow$ Filas

Definición de Conector de BD

Un Conector de BD es el componente que facilita la comunicación entre el servidor de la base de datos (BD) y el software cliente.

Conectores Populares

  1. Open Database Connectivity (ODBC): Es una API diseñada para acceder a Sistemas Gestores de Bases de Datos (SGBD). La aplicación interactúa con funciones ODBC a través de un ODBC driver, el cual traduce y pasa la consulta al SGBD.
  2. Java Database Connectivity (JDBC): Es una API fundamental en Java que define el protocolo estándar para que un cliente se conecte a una BD.

Componentes Clave de JDBC

Clases Esenciales de JDBC

  • Connection: Representa una conexión activa y específica a una base de datos.
  • Statement: Se utiliza para ejecutar sentencias SQL sencillas y obtener sus resultados.
  • PreparedStatement: Ejecuta sentencias SQL que han sido previamente compiladas (útil para sentencias parametrizadas).
  • CallableStatement: Permite la ejecución de stored procedures SQL.
  • ResultSet: Proporciona acceso a la tabla de resultados generada tras ejecutar una consulta SQL.

Pasos Fundamentales en la Operación JDBC

  1. Asignar un objeto Connection para establecer la conexión con el servidor de BD.
  2. Asignar un objeto Statement (o sus variantes) bajo el objeto Connection creado, para contener el comando SQL.
  3. Escribir la consulta SQL y ejecutarla.
  4. Procesar el resultado obtenido de la consulta.
  5. Cerrar los objetos Statement y Connection para liberar los recursos del sistema.

Gestión de Transacciones en JDBC

Una Transacción representa una unidad atómica de trabajo dentro de la base de datos.

Propiedades ACID

El conjunto de propiedades ACID garantiza la validez de las transacciones, incluso ante fallos energéticos o errores:

  • Atomicity (Atomicidad): Todo o nada; la transacción se completa en su totalidad o no se realiza ningún cambio.
  • Consistency (Consistencia): Asegura que la BD transita de un estado consistente a otro estado consistente.
  • Isolation (Aislamiento): Garantiza que una transacción se ejecuta de forma aislada respecto a otras transacciones concurrentes.
  • Durability (Durabilidad): Una vez que una transacción se ha confirmado (commit), sus cambios son permanentes, incluso si ocurren fallos posteriores.

Métodos de Control de Transacciones (Interfaz Connection)

  • Commit(): Confirma y hace permanentes los cambios de la transacción.
  • Rollback(): Cancela la transacción y revierte todos los cambios realizados desde el último commit.
  • SetAutoCommit(boolean): Si el valor es True, las transacciones se confirman automáticamente después de cada sentencia.

Herramientas ORM: Mapeo Relacional de Objetos

¿Qué es el ORM?

El Mapeo Relacional de Objetos (ORM) es una técnica de programación que facilita la conversión de datos entre sistemas con tipos incompatibles, utilizando lenguajes de Programación Orientada a Objetos (POO). El ORM combina efectivamente el Modelo Relacional con el Modelo Orientado a Objetos.

Ventajas del Uso de ORM

Las herramientas ORM ofrecen beneficios significativos en el desarrollo:

  • Automatización de Conversión: Convierte automáticamente entre objetos y tablas, reduciendo los costos de desarrollo y mantenimiento.
  • Menor Código Boilerplate: Se requiere menos código en comparación con el uso directo de SQL incrustado o procedimientos almacenados escritos manualmente.
  • Caché Transparente: Implementa almacenamiento en caché de objetos a nivel de aplicación, lo que mejora el rendimiento general del sistema.

Herramientas de Mapeo Objeto-Relacional

Estas herramientas permiten acceder a bases de datos relacionales directamente desde lenguajes orientados a objetos:

MyBatis

Es un framework de persistencia para Java que vincula objetos con sentencias SQL, utilizando descriptores XML o anotaciones para definir el mapeo.

Ejemplo de Uso de MyBatis (Obtener Cliente)

Para obtener el nombre de un cliente usando ORM con MyBatis:

ClientMapper mapper = session.getMapper(ClientMapper.class);
Client client = mapper.selectClient(3);
System.out.println("Nombre: " + client.getName());
MyBatis y Anotaciones

Una anotación es una forma de metadatos sintácticos que se añade al código fuente de Java. En MyBatis, las anotaciones se declaran en la interfaz de métodos para especificar operaciones CRUD (seleccionar, insertar, actualizar y eliminar).

public interface ClientMapper {
    @Select("SELECT * FROM clients WHERE id=#{id}")
    Client selectClient(int id);
}

Hibernate

Utiliza un lenguaje propio inspirado en SQL, llamado Hibernate Query Language (HQL), que permite escribir consultas orientadas a los objetos de datos gestionados por Hibernate, en lugar de centrarse directamente en las tablas.

Descargar

PDF Word HTML

Preguntas frecuentes

¿Qué es un conector de base de datos?

Es el componente que facilita la comunicación entre el servidor de la base de datos (BD) y el software cliente.

¿Qué hace el método rollback() en JDBC?

Cancela la transacción y revierte todos los cambios realizados desde el último commit.

¿Para qué sirve un PreparedStatement?

Ejecuta sentencias SQL previamente compiladas, y es útil para sentencias parametrizadas.

Ponte a prueba

Tarjetas de repaso

Pulsa una tarjeta para ver la respuesta.

Test

1. ¿Qué clase de JDBC representa una conexión activa y específica a una base de datos?
2. ¿Qué propiedad ACID garantiza que una transacción se complete totalmente o no se realice ningún cambio?
3. ¿Qué hace el método commit() de la interfaz Connection?
4. ¿Qué clase de JDBC se usa para ejecutar stored procedures SQL?
5. ¿Qué significa ORM?
6. ¿Qué cualidad del ORM mejora el rendimiento general del sistema?
7. ¿Cómo define MyBatis el mapeo entre objetos y sentencias SQL?
8. ¿En qué se diferencia HQL de Hibernate respecto al SQL tradicional?

Preguntas generadas con IA a partir del documento: comprueba las respuestas con el texto.