Spring: uso de secuencias de comandos SQL con Spring JDBC+ JPA + HSQLDB

Ejecutaremos los scripts SQL con Spring JDBC+JPA + HSQLDB. Estos scripts se utilizan para ejecutar comandos SQL en el momento del inicio de la aplicación. Java Database Connectivity (JDBC) es una interfaz de programación de aplicaciones (API) para el lenguaje de programación Java, que define cómo un cliente puede acceder a una base de datos. JPA es solo una especificación que facilita el mapeo relacional de objetos para administrar datos relacionales en aplicaciones Java. Usaremos JDBC como conector y JPA con HSQLDBque es el principal sistema de base de datos relacional SQL escrito en Java. Ofrece un motor de base de datos transaccional pequeño, rápido y de subprocesos múltiples con tablas en memoria y basadas en disco, y admite modos integrados y de servidor. Incluye una poderosa herramienta SQL de línea de comandos y herramientas de consulta GUI simples. Para escribir scripts SQL, necesitamos cambiar la configuración de DataSource. DataSource es un nombre dado a la conexión establecida a una base de datos desde un servidor. 

Pasos a seguir

Paso 1. Agregar dependencia en el archivo pom

XML

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
    <version>2.2.2.RELEASE</version>
</dependency>
  
<dependency>
    <groupId>org.hsqldb</groupId>
    <artifactId>hsqldb</artifactId>
    <version>2.4.0</version>
    <scope>runtime</scope>
</dependency>

Paso 2. Cree un archivo de configuración de DataSource que mencione los detalles de la base de datos y la ubicación del archivo de esquema

Crearemos una instancia de DataSource .

Java

// This function create a datasource. Here we will provide
// the DB details like driver,db name,etc
private DataSource createDataSource() {                                  
    DataSourceBuilder dataSourceBuilder = DataSourceBuilder.create();    
    dataSourceBuilder.driverClassName("com.mysql.cj.jdbc.Driver");       
    dataSourceBuilder.url("jdbc:mysql://localhost:3306/geeksforgeeks");  
    dataSourceBuilder.username("root");                                  
    dataSourceBuilder.password("Truthpolls@464");                        
    return dataSourceBuilder.build();                                    
}

Crearemos un DatabasePopulator que llenará los datos en las tablas.

Java

// This is database populator which will read the SQL script.
private DatabasePopulator createDatabasePopulator() {                                
    ResourceDatabasePopulator databasePopulator = new ResourceDatabasePopulator();   
    databasePopulator.setContinueOnError(true);                                      
    databasePopulator.addScript(new ClassPathResource("schema.sql"));                
    return databasePopulator;                                                        
}

Luego ejecutaremos el poblador en la fuente de datos que hemos creado usando DatabasePopulatorUtils

Java

// This is the bean which connects the application to the database. 
// We will use the datasource and the database populator
// for performing commands on the Database
@Bean(name = "dataSource")                                                  
public DataSource getDataSource(){                                          
    DataSource dataSource = createDataSource();                             
    DatabasePopulatorUtils.execute(createDatabasePopulator(), dataSource);  
    return dataSource;                                                      
}

Estos cambios de configuración que hemos hecho para Bean se denominan «fuente de datos»

Java

package com.geeksforgeeks.Spring.MVC.Pagination.configs;
  
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.ClassPathResource;
import org.springframework.jdbc.datasource.init.DatabasePopulator;
import org.springframework.jdbc.datasource.init.DatabasePopulatorUtils;
import org.springframework.jdbc.datasource.init.ResourceDatabasePopulator;
  
import javax.sql.DataSource;
  
// annotated as configuration so application
// knows to run it in the start
@Configuration
public class DataSourceConfig {
    @Bean(name = "dataSource")
    public DataSource getDataSource(){
        DataSource dataSource = createDataSource();
        DatabasePopulatorUtils.execute(createDatabasePopulator(), dataSource);
        return dataSource;
    }
  
    private DatabasePopulator createDatabasePopulator() {
        ResourceDatabasePopulator databasePopulator = new ResourceDatabasePopulator();
        databasePopulator.setContinueOnError(true);
        databasePopulator.addScript(new ClassPathResource("schema.sql"));
        return databasePopulator;
    }
  
    private DataSource createDataSource() {
        DataSourceBuilder dataSourceBuilder = DataSourceBuilder.create();
        dataSourceBuilder.driverClassName("org.hsqldb.jdbc.JDBCDriver");
        dataSourceBuilder.url("jdbc:hsqldb:hsql://localhost/geeksforgeeks");
        dataSourceBuilder.username("root");
        dataSourceBuilder.password("pass");
        return dataSourceBuilder.build();
    }
}

Paso 3. Luego crea los scripts SQL

insertar en el coche (id, nombre, precio) valores (predeterminado, ‘Audi’, 3000000)
insertar en el coche (id, nombre, precio) valores (predeterminado, ‘BMW’, 4000000)
insertar en el coche (id, nombre, precio) valores (predeterminado, ‘Jaguar’,3500000 )

insertar en el libro (id, nombre, precio) valores (predeterminado, ‘Libro-1’, 600)
insertar en el libro (id, nombre, precio) valores (predeterminado, ‘Libro-2’, 500)
insertar en el libro (id, nombre, precio) valores (predeterminado, ‘Book-3’,800 )
 

Cuando ejecutemos esta aplicación, estos scripts se ejecutarán y la base de datos se llenará. La base de datos se veía así ahora (ejecutó la aplicación dos veces).

Producción:

Book table

Mesa de libros

Car table

mesa de coche

Publicación traducida automáticamente

Artículo escrito por bhavyajain4641 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 *