Spring - Voir le contenu de la base de données intégrée HSQLDB

Spring - Afficher le contenu de la base de données intégrée HSQLDB

Un exemple de Spring@Configuration pour démarrer une base de données intégrée HSQLDB ou une base de données en mémoire.

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;
    }

}

Consultez le journal Spring, une base de données intégrée «testdb» sera créée et vous pourrez y accéder via 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]

Afficher le contenu de la base de données intégrée HSQLDB

Démarrez lesDatabaseManagerSwing dans le même conteneur 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", ""});
    }
}

Lorsque le conteneur Spring est démarré, un gestionnaire de base de données Swing HSQL sera invité.

hsql-database-manager

Note
Si vous démarrez lesDatabaseManagerSwing via une invite de commande ou un terminal, le gestionnaire de base de données Swing HSQL sera toujours invité, mais il est IMPOSSIBLE de se connecter à la base de données intégrée qui a démarré par Spring , car les deux sont des JVM différents.

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