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! 🚀