Objetivo do Artigo

Nesta artigo, os leitores irão:

  • Entender a importância da persistência de dados no backend.
  • Aprender os conceitos fundamentais do JPA (Java Persistence API) e Hibernate.
  • Configurar um banco de dados H2 no Spring Boot.
  • Criar entidades e realizar operações básicas de CRUD com Spring Data JPA.

1. Introdução à Persistência de Dados

1.1 O que é Persistência?

Persistência é o processo de armazenar e recuperar dados de forma permanente. No backend, utilizamos bancos de dados relacionais e não relacionais para garantir que as informações não sejam perdidas ao encerrar a execução da aplicação.

1.2 Banco de Dados Relacional vs. Não Relacional

TipoCaracterísticasExemplos
RelacionalEstrutura tabular (tabelas, colunas, relações)PostgreSQL, MySQL, H2
Não RelacionalEstrutura flexível (documentos, chave-valor, grafos)MongoDB, Redis, Firebase

1.3 O que é ORM e JPA?

  • ORM (Object-Relational Mapping): Técnica que converte objetos Java em registros de banco de dados.
  • JPA (Java Persistence API): Especificação Java para persistência de dados, usada por frameworks como Hibernate.
  • Hibernate: Implementação mais popular da JPA, responsável por mapear objetos Java para tabelas do banco de dados.

2. Configurando o Banco de Dados H2 no Spring Boot

2.1 Adicionando Dependências no pom.xml

No arquivo pom.xml, adicione as seguintes dependências:

<dependencies>
    <!-- Spring Data JPA -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>

    <!-- Banco de dados em memória H2 -->
    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <scope>runtime</scope>
    </dependency>
</dependencies>

2.2 Configuração do application.properties

Dentro do diretório src/main/resources, edite o arquivo application.properties:

spring.datasource.url=jdbc:h2:mem:meubanco
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.jpa.hibernate.ddl-auto=update
spring.h2.console.enabled=true

Explicação:

  • jdbc:h2:mem:meubanco → Cria um banco de dados em memória chamado meubanco.
  • spring.h2.console.enabled=true → Ativa a interface web de administração do H2 em http://localhost:8080/h2-console.
  • ddl-auto=update → Cria/atualiza as tabelas automaticamente conforme as entidades.

3. Criando a Entidade e o Repository

3.1 Criando a Entidade Produto

Dentro do pacote model, crie o arquivo Produto.java:

package com.exemplo.model;

import jakarta.persistence.*;
import lombok.*;

@Entity
@Table(name = "produtos")
@Data
@AllArgsConstructor // Cria um construtor com todos os atributos
@NoArgsConstructor  // Cria um construtor vazio
public class Produto {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(nullable = false)
    private String nome;

    @Column(nullable = false)
    private Double preco;
}

Explicação:

  • @Entity: Indica que a classe representa uma entidade no banco.
  • @Table(name = "produtos"): Define o nome da tabela.
  • @Id @GeneratedValue(strategy = GenerationType.IDENTITY): Define a chave primária com auto incremento.
  • @Column(nullable = false): Indica que o campo não pode ser nulo.
  • @AllArgsConstructor: Cria automaticamente um construtor com todos os atributos da classe.
  • @NoArgsConstructor: Cria automaticamente um construtor vazio (sem parâmetros), útil para JPA.

3.2 Criando o Repositório ProdutoRepository

Dentro do pacote repository, crie o arquivo ProdutoRepository.java:

package com.exemplo.repository;

import com.exemplo.model.Produto;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface ProdutoRepository extends JpaRepository<Produto, Long> {
}

Explicação:

  • JpaRepository<Produto, Long> fornece métodos prontos como save(), findById(), deleteById(), etc.

Conclusão

Neste artigo, aprendemos: ✔ O que é persistência de dados e ORM. ✔ Como configurar o banco H2 no Spring Boot. ✔ Criamos uma entidade e um CRUD completo com JPA/Hibernate.

No próximo artigo, vamos explorar consultas avançadas com Spring Data JPA! 🚀

Categorized in:

Spring Boot,