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

  1. Para que serve a anotação @Entity em 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

  1. 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)

  1. Faça o Commit: No GitHub Desktop, digite a mensagem (ex: Finaliza Capítulo 15 Java_ArquivoX) e clique em Commit to main.
  2. 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:

  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:
  2. O método é o findAll().

Capitulo Anterior | Proximo Capitulo