Post

Como criar rapidamente uma conexão com um banco h2 no Spring-boot

Requisitos

Se você não sabe como configurar um projeto no spring-boot ou não entende a injeção de dependência do spring e como configurar beans esse tutorial ainda não é para você :) vamos em frente.

Iniciando

Utilizar banco de dados em memória é uma mão na roda, o motivo é que não precisamos instanciar containers ou mesmo baixar ou ter instalado um banco como mysql ou postgresql, vamos fazer isso de forma bem rápida :)

Após ter seu projeto spring-boot configurado é preciso adicionar algumas depedências no arquivos pom.xml

1
2
3
4
5
6
7
8
9
10
11
12
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>

Acima adicionamos o stater do jpa bem como o artefato para o h2.

Agora precisamos adicionar as configurações no arquivo de properties do nosso projeto

1
2
3
4
5
6
7
8
9
10
11
12
13
14
spring.datasource.url=jdbc:h2:file:./data/minha-base-de-dados
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=password

server.port=3333

spring.h2.console.enabled=true
spring.h2.console.path=/h2-console

spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.jpa.hibernate.ddl-auto=update

Adicionando service com runtime para testes

Vamos adicionar um service no spring para quando a aplicação iniciar já popularmos alguma coisa, mas pra isso vamos adicionar uma entidade de banco e um repository padrão do spring data jpa

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
@Entity()
@Table(name = "produtos")
public class Produto {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(nullable = false)
    private Long id;

    @Column(length = 50, nullable = false)
    private String name;

    public Produto(String name) {
        this.name = name;
    }

    public Produto() {
    }

    public Long getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public void setName(String name) {
        this.name = name;
    }
}

1
2
3
4
public interface ProdutoRepository extends JpaRepository<Produto, Long> {
}

Agora podemos adicionar o service para população do banco

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
@Service
public class ProdutoRunner implements ApplicationRunner {

    private ProdutoRepository repository;
    public ProdutoRunner(ProdutoRepository repository) {

        this.repository = repository;
    }

    @Override
    public void run(ApplicationArguments args) throws Exception {

        List<Produto> produtos = new ArrayList<Produto>();

        Produto produto = new Produto("Geladeira");
        Produto produto2 = new Produto("Televisão");
        Produto produto3 = new Produto("Maquina de lavar");
        Produto produto4 = new Produto("Microondas");
        Produto produto5 = new Produto("Fogão");

        produtos.add(produto);
        produtos.add(produto2);
        produtos.add(produto3);
        produtos.add(produto4);
        produtos.add(produto5);

        this.repository.saveAll(produtos);
    }
}

sempre que a aplicação iniciar esse service acima irá adicionar no banco h2 esses dados.

Startando e testando

Agora basta levantar sua api fazer a conexão em seu browser

Screenshot from 2023-07-26 23-07-13

podemos conferir como ficou

Screenshot from 2023-07-26 23-10-22

valewww

This post is licensed under CC BY 4.0 by the author.