Como Criar um CRUD Completo Usando Java e SpringBoot

Criar um CRUD (Create, Read, Update, Delete) completo é uma das tarefas mais comuns no desenvolvimento de aplicações. No caso do Spring Framework, essa tarefa pode ser realizada de maneira simples e eficiente, aproveitando a robustez do Spring Boot e suas várias funcionalidades. Neste post, vamos mostrar um passo a passo de como construir um CRUD completo usando Spring.

1. Configuração do Ambiente

Antes de começar a codificar, você precisa configurar o ambiente de desenvolvimento. Primeiro, certifique-se de ter o Java (JDK 8 ou superior) instalado e configure o seu IDE de preferência (como IntelliJ IDEA ou Eclipse). Você também vai precisar do Spring Boot, que pode ser facilmente gerado através do Spring Initializr.

Escolha as dependências necessárias:

  • Spring Web
  • Spring Data JPA
  • Banco de dados (H2, MySQL, PostgreSQL, etc.)
  • Lombok (opcional para reduzir o boilerplate)

Com isso, você já tem o esqueleto do seu projeto pronto!

2. Definir a Estrutura do Projeto

Crie uma estrutura básica para o projeto:

src/
 └── main/
      ├── java/
      │     └── com/
      │         └── exemplo/
      │             └── crud/
      │                 ├── model/
      │                 ├── repository/
      │                 ├── service/
      │                 └── controller/
      └── resources/
            ├── application.properties

3. Modelando a Entidade

Crie a classe de modelo que representa os dados que serão manipulados pelo CRUD. Vamos usar um exemplo de uma entidade Produto.

package com.exemplo.crud.model;

import javax.persistence.Entity;
import javax.persistence.Id;

@Entity
public class Produto {

    @Id
    private Long id;
    private String nome;
    private double preco;

    // Getters and Setters
}

4. Criando o Repositório

Agora, crie o repositório para interagir com o banco de dados. O Spring Data JPA permite que você crie repositórios simples estendendo a interface JpaRepository.

package com.exemplo.crud.repository;

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

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

5. Desenvolvendo o Serviço

O serviço será responsável pela lógica de negócio. Ele interage com o repositório para realizar as operações de CRUD.

package com.exemplo.crud.service;

import com.exemplo.crud.model.Produto;
import com.exemplo.crud.repository.ProdutoRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Optional;

@Service
public class ProdutoService {

    @Autowired
    private ProdutoRepository produtoRepository;

    public List<Produto> listarProdutos() {
        return produtoRepository.findAll();
    }

    public Produto buscarProdutoPorId(Long id) {
        Optional<Produto> produto = produtoRepository.findById(id);
        return produto.orElse(null);
    }

    public Produto salvarProduto(Produto produto) {
        return produtoRepository.save(produto);
    }

    public void deletarProduto(Long id) {
        produtoRepository.deleteById(id);
    }
}

6. Criando o Controller

O controlador será responsável por mapear as requisições HTTP e retornar as respostas para o usuário. Aqui, vamos criar os endpoints para o CRUD de Produto.

package com.exemplo.crud.controller;

import com.exemplo.crud.model.Produto;
import com.exemplo.crud.service.ProdutoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/produtos")
public class ProdutoController {

    @Autowired
    private ProdutoService produtoService;

    @GetMapping
    public List<Produto> listarProdutos() {
        return produtoService.listarProdutos();
    }

    @GetMapping("/{id}")
    public Produto buscarProdutoPorId(@PathVariable Long id) {
        return produtoService.buscarProdutoPorId(id);
    }

    @PostMapping
    public Produto salvarProduto(@RequestBody Produto produto) {
        return produtoService.salvarProduto(produto);
    }

    @PutMapping("/{id}")
    public Produto atualizarProduto(@PathVariable Long id, @RequestBody Produto produto) {
        produto.setId(id);
        return produtoService.salvarProduto(produto);
    }

    @DeleteMapping("/{id}")
    public void deletarProduto(@PathVariable Long id) {
        produtoService.deletarProduto(id);
    }
}

7. Configurando o Banco de Dados

Adicione as configurações de banco de dados no arquivo application.properties. Se você estiver usando o H2 (banco em memória para testes), a configuração ficaria assim:

spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=password
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.h2.console.enabled=true

Se for usar um banco de dados real como MySQL, ajuste as configurações de acordo.

8. Executando o Projeto

Agora, basta executar a classe principal do Spring Boot, que está anotada com @SpringBootApplication, e seu CRUD estará funcionando! Você pode testar os endpoints usando ferramentas como Postman ou diretamente no navegador.

  • GET /produtos – Lista todos os produtos
  • GET /produtos/{id} – Busca um produto por ID
  • POST /produtos – Cria um novo produto
  • PUT /produtos/{id} – Atualiza um produto existente
  • DELETE /produtos/{id} – Deleta um produto

Conclusão

Criar um CRUD completo usando Spring é simples e direto, especialmente com o Spring Boot, que facilita a configuração e a implementação. O processo envolve a criação de uma entidade, um repositório, um serviço para a lógica de negócio e um controlador para mapear as requisições. Com esses componentes, você pode construir aplicações web completas de forma ágil e eficiente.

Deixe um comentário