Spring - Просмотр содержимого встроенной базы данных HSQLDB

Spring - просмотр содержимого встроенной базы данных HSQLDB

Пример Spring@Configuration для запуска встроенной базы данных HSQLDB или базы данных в памяти.

DataSourceConfig.java

package com.example.config.db;

import javax.sql.DataSource;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabase;
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder;
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType;

@Configuration
public class DataSourceConfig {

    @Bean
    public DataSource dataSource(){
        //jdbc:hsqldb:mem:testdb
        EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder();
        EmbeddedDatabase db = builder.setType(EmbeddedDatabaseType.HSQL)
            .addScript("db/hsqldb/db.sql")
            .build();
        return db;
    }

}

Просмотрите журнал Spring, будет создана встроенная база данных testdb, и вы сможете получить доступ через jdbcjdbc:hsqldb:mem:testdb

INFO  o.s.j.d.e.EmbeddedDatabaseFactory - Creating embedded database 'testdb'
DEBUG o.s.jdbc.datasource.DataSourceUtils - Fetching JDBC Connection from DataSource
DEBUG o.s.j.d.SimpleDriverDataSource - Creating new JDBC Driver Connection to [jdbc:hsqldb:mem:testdb]
INFO  o.s.jdbc.datasource.init.ScriptUtils - Executing SQL script from class path resource [db/hsqldb/db.sql]

Просмотр содержимого встроенной базы данных HSQLDB

ЗапуститеDatabaseManagerSwing в том же контейнере Spring.

SpringRootConfig.java

package com.example.config;

import javax.annotation.PostConstruct;
import javax.sql.DataSource;

import org.hsqldb.util.DatabaseManagerSwing;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.jdbc.core.JdbcTemplate;

import com.example.config.db.DataSourceConfig;

@Configuration
@Import({DataSourceConfig.class})
@ComponentScan({ "com.example" })
public class SpringRootConfig {

    @Autowired
    DataSource dataSource;

    @Bean
    public JdbcTemplate getJdbcTemplate(){
      return new JdbcTemplate(dataSource);
    }

    //default username : sa, password : ''
    @PostConstruct
    public void getDbManager(){
       DatabaseManagerSwing.main(
        new String[] { "--url", "jdbc:hsqldb:mem:testdb", "--user", "sa", "--password", ""});
    }
}

Когда контейнер Spring запущен, диспетчер баз данных Swing HSQL будет запрошен.

hsql-database-manager

Note
Если вы запуститеDatabaseManagerSwing через командную строку или терминал, менеджер баз данных Swing HSQL все равно будет запрашивать запрос, но НЕВОЗМОЖНО подключиться к встроенной базе данных, запущенной Spring , потому что это разные JVM.

java -cp hsqldb-2.3.2.jar org.hsqldb.util.DatabaseManagerSwing