🚀 Capítulo 15: O Arquivo X de Dados (Tema: Arquivo X)
NOTE
Este capítulo utiliza a temática de Arquivo X para explicar o uso de Bancos de Dados com Spring Data JPA. Guarde as informações da sua API de forma permanente e sem sofrimento!
1. 🎯 Objetivo da Aula
Compreender como conectar a aplicação Spring Boot a um banco de dados relacional usando o Spring Data JPA, aprendendo a criar Entidades e Interfaces de Repositório.
2. 🏢 O Cenário Prático (Seu Desafio)
Na famosa série de suspense Arquivo X, os agentes do FBI Mulder e Scully investigam casos misteriosos e paranormais. Todas as pistas, depoimentos de testemunhas e fotos de discos voadores que eles coletam são guardados em pastas físicas dentro de grandes arquivos de metal na delegacia. Para resolver um caso novo, eles precisam ir até o arquivo, buscar a pasta certa e ler os dados!
No mundo das APIs reais, nós não podemos guardar as informações apenas na memória RAM do computador. Se o servidor reiniciar, tudo some! Nós precisamos guardar os dados em um Banco de Dados!
- E para não precisarmos escrever comandos complexos e gigantescos de linguagem SQL na mão, o Spring Boot possui uma ferramenta incrível chamada Spring Data JPA.
- Ele é o arquivista perfeito: ele pega as nossas classes Java e as transforma automaticamente em tabelas no banco de dados! Seu desafio é arquivar os dados!
🧠 Fundamentos: A Teoria Traduzida
Para mexer com banco de dados no Spring, nós precisamos de duas coisas:
📁 1. A Entidade (@Entity):
É uma classe Java comum que representa uma tabela no banco de dados. Cada variável vira uma coluna!
@Entity
public class Caso {
@Id // Diz que esse campo é o ID único (chave primária)
@GeneratedValue(strategy = GenerationType.IDENTITY) // O banco gera o número sozinho!
private Long id;
private String titulo;
private String descricao;
}classDiagram class Caso { Long id String titulo String descricao } class Tabela_Caso { id : BIGINT titulo : VARCHAR descricao : VARCHAR } Caso --> Tabela_Caso : Mapeamento JPA
🗄️ 2. O Repositório (JpaRepository):
Aqui está a mágica! Em vez de criar uma classe para salvar os dados no banco, nós criamos apenas uma Interface que herda de JpaRepository. O Spring cria todo o código de salvar, buscar e deletar sozinho para nós!
import org.springframework.data.jpa.repository.JpaRepository;
public interface CasoRepository extends JpaRepository<Caso, Long> {
// Não precisa digitar nada aqui dentro! O Spring já criou tudo!
}4. 📖 Exemplo Guiado: As Funções Prontas
Ao herdar de JpaRepository, a sua interface ganha automaticamente métodos como:
repository.save(objeto): Salva ou atualiza um registro no banco.repository.findAll(): Busca todos os registros da tabela.repository.findById(id): Busca um registro específico pelo número do ID.repository.deleteById(id): Deleta o registro do banco.
5. 🛠️ Prática Obrigatória 1: O papel da Entidade
Com base no texto:
- Para que serve a anotação
@Entityem cima de uma classe Java quando estamos usando o Spring Data JPA? O que o Spring vai fazer com essa classe?
6. 🛠️ Prática Obrigatória 2: Os Métodos Prontos
- Qual é o nome do método que a sua interface de repositório ganha automaticamente para buscar todos os registros salvos de uma tabela no banco de dados?
7. 📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)
- Faça o Commit: No GitHub Desktop, digite a mensagem (ex:
Finaliza Capítulo 15 Java_ArquivoX) e clique em Commit to main. - Envie para a Nuvem (Push): Clique em Push origin.
8. 📂 Estrutura de Pastas
spec_backend_com_java_e_springboot/
├── capitulos/
│ └── capitulo_15_arquivo_x.md💡 Checkpoint de Lógica
O Spring Data JPA usa por baixo dos panos uma ferramenta chamada Hibernate, que é quem realmente traduz os comandos do Java para a linguagem SQL que o banco de dados entende!
10. 🔥 Desafio de Fixação
Pesquise como criar uma busca personalizada na sua interface de repositório apenas escrevendo o nome do método (Dica: procure por Query Methods no Spring Data JPA, como findByTitulo).
🔑 Gabarito de Código/Fórmulas
Gabarito da Prática 1:
- Ela avisa ao Spring que aquela classe representa uma tabela no banco de dados. O Spring vai ler a classe e criar a tabela física no banco automaticamente, transformando cada variável da classe em uma coluna da tabela! Gabarito da Prática 2:
- O método é o
findAll().