Primavera – Plantilla JDBC

Java Database Connectivity (JDBC) es una interfaz de programación de aplicaciones (API) que define cómo un cliente puede acceder a una base de datos. Es una tecnología de acceso a datos utilizada para la conectividad de bases de datos Java. Proporciona métodos para consultar y actualizar datos en una base de datos y está orientado a bases de datos relacionales. JDBC ofrece una interfaz Java natural para trabajar con SQL . Se necesita JDBC para proporcionar una solución de «Java puro» para el desarrollo de aplicaciones. La API de JDBC utiliza controladores JDBC para conectarse con la base de datos. 

Hay 4 tipos de controladores JDBC:

  1. Controlador de puente JDBC-ODBC
  2. Controlador API nativo (controlador parcialmente Java)
  3. Controlador de protocolo de red (controlador completamente Java)
  4. Thin Driver (controlador completamente Java)

Java Database Connectivity

Las ventajas de la API de JDBC son las siguientes:  

  1. Crea automáticamente el formato XML de los datos de la base de datos.
  2. Admite consultas y procedimientos almacenados.
  3. Se puede acceder a casi cualquier base de datos para la que esté instalado el controlador ODBC .

Las desventajas de la API de JDBC son las siguientes: 

  1. Escribir muchos códigos antes y después de ejecutar la consulta, como crear una conexión, crear una declaración, cerrar el conjunto de resultados, cerrar la conexión, etc.
  2. Escribir código de manejo de excepciones en la lógica de la base de datos.
  3. La repetición de estos códigos de una lógica de base de datos a otra requiere mucho tiempo.

Estos problemas de la API de JDBC se eliminan con Spring JDBC-Template . Proporciona métodos para escribir las consultas directamente, lo que ahorra mucho tiempo y esfuerzo.

Acceso a datos mediante plantilla JDBC

Hay una serie de opciones para seleccionar un enfoque para formar la base de su acceso a la base de datos JDBC . Spring Framework proporciona los siguientes enfoques para el acceso a la base de datos JDBC :

  • Plantilla Jdbc
  • NamedParameterJdbcTemplate
  • PlantillaJdbcSimple
  • SimpleJdbcInsert y SimpleJdbcCall

Plantilla JDBC

JdbcTemplate es una clase central en el paquete principal de JDBC que simplifica el uso de JDBC y ayuda a evitar errores comunes. Utiliza internamente la API de JDBC y elimina muchos problemas con la API de JDBC . Ejecuta consultas o actualizaciones de SQL, iniciando la iteración sobre ResultSets y capturando excepciones de JDBC y traduciéndolas al genérico. Ejecuta el flujo de trabajo central de JDBC , dejando el código de la aplicación para proporcionar SQL y extraer resultados. Maneja la excepción y proporciona los mensajes de excepción informativos con la ayuda de las clases de excepción definidas en el paquete org.springframework.dao .

Los métodos comunes de la clase spring JdbcTemplate.

Métodos Descripción
actualización pública int (consulta de string) Se utiliza para insertar, actualizar y eliminar registros.
actualización pública int (consulta de string, objeto… argumentos) Se usa para insertar, actualizar y eliminar registros usando PreparedStatement usando argumentos dados.
ejecución T pública (String sql, acción PreparedStatementCallback) Ejecuta la consulta mediante PreparedStatementCallback.
 ejecución de vacío público (consulta de string) Se utiliza para ejecutar la consulta DDL .
consulta T pública (String sql, resultado de ResultSetExtractor) Se utiliza para obtener registros mediante ResultSetExtractor .

 Consultas de plantilla JDBC

Consulta básica para contar alumnos almacenados en la base de datos utilizando JdbcTemplate .

int result = jdbcTemplate.queryForObject(
"SELECT COUNT(*) FROM STUDENT", Integer.class);

Y aquí hay un simple INSERTAR :

public int addStudent(int id) 
{
  return jdbcTemplate.update("INSERT INTO STUDENT VALUES (?, ?, ?)", id, "megan", "India");
}

La sintaxis estándar para proporcionar parámetros es usar el «?» personaje.

Implementación: Spring JdbcTemplate

Comenzamos con algunas configuraciones simples de la fuente de datos. Usaremos una base de datos MySQL

Ejemplo:

Java

/*package whatever //do not write package name here */
@Configuration
@ComponentScan("com.exploit.jdbc")
public class SpringJdbcConfig {
    @Bean public DataSource mysqlDataSource()
    {
        DriverManagerDataSource dataSource
            = new DriverManagerDataSource();
        dataSource.setDriverClassName(
            "com.mysql.jdbc.Driver");
        dataSource.setUrl(
            "jdbc:mysql://localhost:8800/springjdbc");
        dataSource.setUsername("user");
        dataSource.setPassword("password");
 
        return dataSource;
    }
}

A. Archivo: Student.java

Java

// Java Program to Illustrate Student Class
 
package com.exploit.org;
 
// Class
public class Student {
 
    // Class data members
    private Integer age;
    private String name;
    private Integer id;
 
    // Constructor
    public Student() {}
 
    // Setters and Getters
    public void setAge(Integer age) { this.age = age; }
    public Integer getAge() { return age; }
    public void setName(String name) { this.name = name; }
    public String getName() { return name; }
    public void setId(Integer id) { this.id = id; }
    public Integer getId() { return id; }
}

B. Archivo: StudentDAO.java

A continuación se muestra la implementación del archivo de interfaz del objeto de acceso a datos StudentDAO.java.

Ejemplo:

Java

// Java Program to Illustrate StudentDAO Class
 
package com.exploit.org;
 
// importing required classes
import java.util.List;
import javax.sql.DataSource;
 
// Class
public interface StudentDAO {
 
    // Used to initialize database resources
    // ie. connection
    public void setDataSource(DataSource ds);
 
    // Used to list down all the records
    // from the Student table
    public List<Student> listStudents();
}

C. Archivo: Dependencia de Maven

La dependencia se usa en el archivo pom.xml .

Ejemplo:

XML

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
 
<dependency>
   <groupId>mysql</groupId>
   <artifactId>mysql-connector-java</artifactId>
   <scope>runtime</scope>
</dependency>

D. Archivo: StudentJDBCTemplate.java

A continuación se muestra el archivo de clase de implementación StudentJDBCTemplate.java para la interfaz DAO definida StudentDAO.

Ejemplo:

Java

// Java Program Illustrating Implementation
// of StudentDAO Class
 
package com.exploit.org;
 
// Importing required classes
import java.util.List;
import javax.sql.DataSource;
import org.springframework.jdbc.core.JdbcTemplate;
 
// Class
// Implementing StudentDAO Class
public class StudentJDBCTemp implements StudentDAO {
 
    // Class data members
    private DataSource dataSource;
    private JdbcTemplate jdbcTemplateObject;
 
    // Method 1
    public void setDataSource(DataSource dataSource)
    {
        // This keyword refers to current instance itself
        this.dataSource = dataSource;
        this.jdbcTemplateObject
            = new JdbcTemplate(dataSource);
    }
 
    // Method 2
    public List<Student> listStudents()
    {
        // Custom SQL query
        String SQL = "select * from Student";
        List<Student> students = jdbcTemplateObject.query(
            SQL, new StudentMapper());
 
        return students;
    }
}

Publicación traducida automáticamente

Artículo escrito por kaalel y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *