Spring — использование сценариев SQL с Spring JDBC + JPA + HSQLDB
Мы будем запускать сценарии SQL с помощью Spring JDBC + JPA + HSQLDB. Эти сценарии используются для выполнения команд SQL во время запуска приложения. Java Database Connectivity (JDBC) — это интерфейс прикладного программирования (API) для языка программирования Java, который определяет, как клиент может получить доступ к базе данных. JPA — это всего лишь спецификация, упрощающая объектно-реляционное отображение для управления реляционными данными в приложениях Java. Мы будем использовать JDBC в качестве соединителя и JPA с HSQLDB , которая является ведущей системой реляционных баз данных SQL, написанной на Java. Он предлагает небольшой, быстрый многопоточный и транзакционный механизм базы данных с таблицами в памяти и на диске и поддерживает встроенный и серверный режимы. Он включает в себя мощный инструмент SQL командной строки и простые инструменты запросов с графическим интерфейсом. Для написания SQL-скриптов нам нужно изменить конфигурацию DataSource. DataSource — это имя, данное соединению, установленному с сервером к базе данных.
Шаги, которые необходимо выполнить
Шаг 1. Добавьте зависимость в файл 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 > |
Шаг 2. Создайте файл конфигурации DataSource, указав сведения о БД и расположение файла схемы.
Мы создадим экземпляр 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.username( "root" ); dataSourceBuilder.password( "Truthpolls@464" ); return dataSourceBuilder.build(); } |
Мы создадим DatabasePopulator , который будет заполнять данные в таблицы.
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; } |
Затем мы выполним заполнитель для источника данных, который мы создали, используя 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; } |
Эти изменения конфигурации, которые мы сделали для Bean, называются «dataSource».
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.username( "root" ); dataSourceBuilder.password( "pass" ); return dataSourceBuilder.build(); } } |
Шаг 3. Затем создайте сценарии SQL
insert into car (id, name, price) values (default, ‘Audi’,3000000 )
insert into car (id, name, price) values (default, ‘BMW’,4000000 )
insert into car (id, name, price) values (default, ‘Jaguar’,3500000 )insert into book (id, name, price) values (default, ‘Book-1’,600 )
insert into book (id, name, price) values (default, ‘Book-2’,500 )
insert into book (id, name, price) values (default, ‘Book-3’,800 )
Когда мы запустим это приложение, эти сценарии будут запущены, и база данных будет заполнена. Теперь база данных выглядела так (приложение запускалось дважды).
Выход: