Inicialização Spring com banco de dados H2

Inicialização Spring com banco de dados H2

1. Visão geral

Neste tutorial, vamos explorar o uso de H2 com Spring Boot. Assim como outros bancos de dados, há suporte intrínseco completo para ele no ecossistema Spring Boot.

Leitura adicional:

Lista de bancos de dados na memória

Uma rápida revisão de como configurar alguns dos bancos de dados em memória mais populares para um aplicativo Java.

Read more →

Inicialização de mola com hibernação

Uma introdução rápida e prática à integração do Spring Boot e do Hibernate / JPA.

Read more →

2. Dependências

Então, vamos começar com as dependênciash2espring-boot-starter-data-jpa:


    org.springframework.boot
    spring-boot-starter-data-jpa
    2.1.4.RELEASE


    com.h2database
    h2
    runtime
    1.4.199

Claro, Spring Boot gerencia essas versões para nós, então, normalmente, vamos apenas deixar de fora a seleçãoversion .

3. Configuração do banco de dados

Por padrão, Spring Boot configura o aplicativo paraconnect to an in-memory store with the username sa and an empty password. No entanto, podemos alterar esses parâmetros adicionando as seguintes propriedades ao arquivoapplication.properties:

spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=password
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect

Por design, o banco de dados na memória é volátil e os dados serão perdidos quando reiniciarmos o aplicativo.

Podemos mudar esse comportamento usando o armazenamento baseado em arquivo. Para fazer isso, precisamos atualizar ospring.datasource.url:

spring.datasource.url=jdbc:h2:file:/data/demo

The path, like /data/demo here, has to be absolute. O banco de dados também podeoperate in other modes.

4. Operações de banco de dados

Realizar operações CRUD com H2 dentro do Spring Boot é o mesmo que com outros bancos de dados SQL e nossos tutoriais na sérieSpring Persistence fazem um bom trabalho ao cobrir isso.

Enquanto isso, vamos adicionar umdata.sql file emsrc/main/resources:

DROP TABLE IF EXISTS billionaires;

CREATE TABLE billionaires (
  id INT AUTO_INCREMENT  PRIMARY KEY,
  first_name VARCHAR(250) NOT NULL,
  last_name VARCHAR(250) NOT NULL,
  career VARCHAR(250) DEFAULT NULL
);

INSERT INTO billionaires (first_name, last_name, career) VALUES
  ('Aliko', 'Dangote', 'Billionaire Industrialist'),
  ('Bill', 'Gates', 'Billionaire Tech Entrepreneur'),
  ('Folrunsho', 'Alakija', 'Billionaire Oil Magnate');

O Spring Boot irá selecionar automaticamente odata.sql e executá-lo em nosso banco de dados H2 configurado durante a inicialização do aplicativo. Essa é uma boa maneira de propagar o banco de dados para testes ou outros fins.

5. Acessando o Console H2

O banco de dados H2 possui um console da GUI incorporado para navegar no conteúdo de um banco de dados e executar consultas SQL. Por padrão, o console H2 não está ativado no Spring. Então, para habilitá-lo, precisamos adicionar a seguinte propriedade aapplication.properties:

spring.h2.console.enabled=true

Então, após iniciar o aplicativo, podemos navegar atéhttp://localhost:8080/h2-console que nos apresentará uma página de login. Na página de login, forneceremos as mesmas credenciais que usamos noapplication.properties:

image

Assim que nos conectarmos, veremos uma página da web abrangente que lista todas as tabelas no lado esquerdo da página e uma caixa de texto para executar consultas SQL:

image

O console da web possui um recurso de preenchimento automático que sugere palavras-chave SQL. O fato de o console ser leve facilita a inspeção visual do banco de dados ou a execução direta do SQL bruto.

Além disso, podemos configurar ainda mais o console, especificando as seguintes propriedades emapplication.properties do projeto com nossos valores desejados:

spring.h2.console.path=/h2-console
spring.h2.console.settings.trace=false
spring.h2.console.settings.web-allow-others=false

No snippet acima, definimos o caminho do console como/h2-console, que é relativo ao endereço e à porta de nosso aplicativo em execução. Portanto, se nosso aplicativo estiver sendo executado emhttp://localhost:9001, o console estará disponível emhttp://localhost:9001/h2-console.

Além disso, definimosspring.h2.console.settings.trace parafalse para evitar a saída de rastreamento e também podemos desativar o acesso remoto definindospring.h2.console.settings.web-allow-others parafalse.

6. Conclusão

O banco de dados H2 é totalmente compatível com o Spring Boot. Vimos como configurá-lo e como usar o console H2 para gerenciar nosso banco de dados em execução.

O código-fonte completo está disponível emGithub.