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
| Tipo | Características | Exemplos |
|---|---|---|
| Relacional | Estrutura tabular (tabelas, colunas, relações) | PostgreSQL, MySQL, H2 |
| Não Relacional | Estrutura 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 chamadomeubanco.spring.h2.console.enabled=true→ Ativa a interface web de administração do H2 emhttp://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 comosave(),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! 🚀