Soluções Embutidas para Camada de Dados no SpringBoot

No desenvolvimento com SpringBoot, a camada de dados frequentemente envolve a combinação de fontes de dados, tecnologias de persistência e bancos de dados. Opções comuns incluem o uso de Hikari ou Druid como fonte de dados, juntamente com JdbcTemplate, MyBatis ou MyBatis-Plus para persistência, e bancos como MySQL ou H2. O SpringBoot facilita isso com soluções embutidas, eliminando a necessidade de configuração manual complexa.

Fonte de Dados Embutida: Hikari

O SpringBoot automaticamente configura uma fonte de dados quando dependências apropriadas estão presentes. Ele oferece três opções embutidas:

  • HikariCP: Fonte de dados padrão, conhecida por sua leveza e desempenho rápido.
  • DataSource do Tomcat: Usada em ambientes web se o Hikari não estiver disponível.
  • Commons DBCP: Alternativa quando tanto Hikari quanto Tomcat não estão acessíveis.

Por padrão, o Hikari é ativado. Configurações básicas de conexão podem ser definidas assim:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/banco_dados?serverTimezone=UTC
    username: usuario
    password: senha

Para ajustes específicos, como o pool de conexões, use seções dedicadas:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/banco_dados?serverTimezone=UTC
    hikari:
      maximum-pool-size: 40
      driver-class-name: com.mysql.cj.jdbc.Driver
    dbcp2:
    tomcat:

Solução de Persistência Embutida: JdbcTemplate

Para usar o JdbcTemplate, adicione a dependência correspondente:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>

Configure opções do template no application.yml:

spring:
  jdbc:
    template:
      query-timeout: 30
      max-rows: 200
      fetch-size: 10

Exemplo de uso para consultas e atualizações, com nomes de variáveis alterados para clareza:

@SpringBootTest
class TesteAplicacaoDados {
    @Autowired
    private JdbcTemplate templateJdbc;

    @Test
    void buscarLivroPorId() {
        String consulta = "SELECT * FROM livros WHERE id = ?";
        List<Livro> resultados = templateJdbc.query(consulta, new Object[]{1}, new RowMapper<Livro>() {
            @Override
            public Livro mapRow(ResultSet rs, int linha) throws SQLException {
                Livro livro = new Livro();
                livro.setId(rs.getInt("identificador"));
                livro.setTitulo(rs.getString("titulo"));
                livro.setCategoria(rs.getString("categoria"));
                livro.setDescricao(rs.getString("descricao"));
                return livro;
            }
        });
        System.out.println(resultados);
    }

    @Test
    void inserirNovoLivro() {
        String comando = "INSERT INTO livros (titulo, categoria) VALUES (?, ?)";
        templateJdbc.update(comando, "Título Exemplo", "Ficção");
    }
}

Outro exemplo simplificado usando queryForList:

@Test
void listarLivros() {
    String sql = "SELECT * FROM livros WHERE ativo = true";
    List<Map<String, Object>> lista = templateJdbc.queryForList(sql);
}

Bancco de Dados Embutido: H2

O SpringBoot suporta bancos de dados embutidos como H2, HSQL e Derby, que são leves e podem rodar em memória para testes. Para produção, prefira bancos como MySQL. Configure o H2 adicionando dependências:

<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jpa</artifactId>
</dependency>

Ative o console de gerenciamento e defina a fonte de dados no application.yml:

spring:
  h2:
    console:
      path: /console-h2
      enabled: true
  datasource:
    url: jdbc:h2:mem:testdb
    driver-class-name: org.h2.Driver
    username: admin
    password: segredo

Acesse o console em /console-h2 durante o desenvolvimento.

Tags: SpringBoot Hikari JdbcTemplate H2 MySQL

Publicado em 6-6 16:40 por Thomas