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.