Files
Prospeccao_SeConectai/Schema/etapas/02-modelagem-entidades-jpa.md
T
2026-10-01 11:00:47 -03:00

2.2 KiB

Etapa 02 — Modelagem das entidades JPA

Objetivo

Implementar as migrations Flyway completas do schema e as entidades JPA correspondentes, conforme definido em ARQUITETURA-SCHEMA.md seção 4.

Contexto

Esta etapa traduz o schema SQL já definido na arquitetura para migrations Flyway numeradas e entidades Java. Não altere o schema aqui — se algo precisar mudar, volte primeiro em ARQUITETURA-SCHEMA.md, versione (v1.1) e só então implemente.

Tarefas

  1. Criar as migrations Flyway, uma tabela por arquivo, na ordem de dependência (por causa das foreign keys):
    • V2__create_usuarios.sql
    • V3__create_ramos.sql
    • V4__create_proxies.sql
    • V5__create_buscas.sql
    • V6__create_leads.sql
    • V7__create_telefones.sql
    • V8__create_historico_contato.sql
  2. Usar exatamente o DDL definido em ARQUITETURA-SCHEMA.md seção 4 (colunas, tipos, constraints, índices) — não improvisar campos novos sem atualizar o documento antes
  3. Criar as entidades JPA em domain/, uma classe por tabela: Usuario, Ramo, Proxy, Busca, Lead, Telefone, HistoricoContato
    • Usar @Enumerated(EnumType.STRING) para os campos de status (mais seguro que String livre) — criar enums correspondentes: StatusBusca, StatusLead, StatusProxy
    • Mapear os relacionamentos (@ManyToOne, @OneToMany) conforme as foreign keys do schema
  4. Criar as interfaces repository/ (Spring Data JPA) para cada entidade: LeadRepository, BuscaRepository, RamoRepository, ProxyRepository, etc.
    • Adicionar métodos de consulta que já sabemos que serão necessários: findByHashDedup, findByCnpj, findByStatus, findByBuscaId
  5. Rodar a aplicação e validar que todas as migrations aplicam em sequência sem erro em um banco limpo

Critérios de aceite

  • Todas as migrations da lista aplicam em sequência em um banco limpo
  • Entidades JPA mapeiam corretamente para as tabelas (validar com um teste simples de save/find por entidade)
  • Enums de status criados e usados nas entidades correspondentes
  • Repositories criados com os métodos de consulta essenciais
  • Nenhuma divergência entre o schema SQL aplicado e o definido em ARQUITETURA-SCHEMA.md