Ferramenta de Conversão SQL DDL para Entidade Java

Converte declarações SQL DDL em classes de entidade Java com suporte a anotações JPA, Lombok e validação

Mapeamento de Tipos de Dados

Tipos de String

  • VARCHAR, CHAR, TEXT → String
  • LONGTEXT, MEDIUMTEXT → String
  • ENUM → String

Tipos Numéricos

  • INT, INTEGER → Integer
  • BIGINT → Long
  • SMALLINT → Short
  • TINYINT → Byte
  • DECIMAL, NUMERIC → BigDecimal
  • FLOAT, DOUBLE → Double

Tipos de Tempo

  • DATETIME, TIMESTAMP → LocalDateTime
  • DATE → LocalDate
  • TIME → LocalTime

Outros Tipos

  • BOOLEAN, BOOL → Boolean
  • BLOB, BINARY → byte[]
  • JSON → String

Convenção de Nomenclatura

CamelCase:user_name → userNameaccess_date → accessDate
Sublinhado:user_name → user_nameaccess_date → access_date

Mapeamento de Tipos de Tempo

Objetos de Tempo Habilitados:DATETIME → LocalDateTimeDATE → LocalDateTIME → LocalTime
Objetos de Tempo Desabilitados:DATETIME → StringDATE → StringTIME → String

Visao geral da ferramenta: Ferramenta de Conversão SQL DDL para Entidade Java

No desenvolvimento Java, especialmente ao usar Spring Boot e frameworks JPA, frequentemente há necessidade de criar classes de entidade baseadas em estruturas de tabelas de banco de dados. Escrever manualmente essas classes de entidade não é apenas demorado, mas também propenso a erros. Esta ferramenta converte automaticamente declarações SQL DDL em classes de entidade Java padrão, melhorando significativamente a eficiência de desenvolvimento.

O que é Ferramenta de Conversão SQL DDL para Entidade Java?

Ferramenta de Conversão SQL DDL para Entidade Java converte SQL DDL em Java entity e gera uma saída pronta para uso.

Como usar

  1. Cole o conteúdo SQL DDL ou informe parâmetros.
  2. Escolha Java entity como saída e ajuste as opções.
  3. Revise o resultado e copie ou faça o download.

Casos de uso comuns

  • Migração de formato SQL DDL↔Java entity
  • Usar dados SQL DDL em fluxos Java entity ou geração de código
  • Validar a conversão contra especificações

❓ Perguntas frequentes

P1: Por que o resultado está incorreto?
R: Verifique o formato de entrada e as opções, e teste o exemplo se houver.

P2: E se a entrada for muito grande?
R: Divida os dados em partes menores para obter resultados mais estáveis.

P3: Como salvo a saída?
R: Use os botões de copiar ou baixar se a ferramenta oferecer.

✨ Recursos Principais

  • 🔄 Conversão Inteligente: Analisa automaticamente declarações CREATE TABLE e gera classes de entidade Java correspondentes
  • 🏷️ Suporte a Múltiplas Anotações: Gera anotações JPA, Lombok e Bean Validation
  • 📊 Mapeamento de Tipos: Mapeamento completo de tipos de dados SQL para tipos Java
  • ⚙️ Opções Configuráveis: Personaliza nome do pacote, geração de anotações, convenções de nomenclatura e mapeamento de tipos de tempo
  • 🔧 Tratamento de Restrições: Trata automaticamente chaves primárias, chaves estrangeiras, restrições únicas, valores padrão, etc.
  • 📝 Padrões de Código: Gera código que segue as convenções de nomenclatura Java
  • 🎯 Flexibilidade de Nomenclatura: Suporte para estilos de nomenclatura camelCase e sublinhado
  • Escolha de Tipos de Tempo: Opção para mapear campos de tempo para objetos de tempo ou strings

📖 Exemplos de Uso

Conversão de Estrutura de Tabela Básica

SQL DDL de Entrada:

CREATE TABLE users (
    id BIGINT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL UNIQUE,
    email VARCHAR(100) NOT NULL,
    age INT,
    is_active BOOLEAN DEFAULT TRUE,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

Entidade Java de Saída:

package com.example.entity;

import java.time.LocalDateTime;
import javax.persistence.*;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import java.io.Serializable;

@Data
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = "users")
public class Users implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id", nullable = false)
    private Long id;

    @Column(name = "username", nullable = false, unique = true)
    private String username;

    @Column(name = "email", nullable = false)
    private String email;

    @Column(name = "age")
    private Integer age;

    @Column(name = "is_active")
    private Boolean isActive;

    @Column(name = "created_at")
    private LocalDateTime createdAt;

    @Column(name = "updated_at")
    private LocalDateTime updatedAt;
}

📐 Tabela de Mapeamento de Tipos de Dados

Mapeamento de Tipos MySQL

Tipo SQL Tipo Java Descrição
VARCHAR, CHAR, TEXT String Tipos de string
INT, INTEGER Integer Inteiro de 32 bits
BIGINT Long Inteiro de 64 bits
SMALLINT Short Inteiro de 16 bits
TINYINT Byte Inteiro de 8 bits
DECIMAL, NUMERIC BigDecimal Decimal de alta precisão
FLOAT Float Ponto flutuante de precisão simples
DOUBLE Double Ponto flutuante de dupla precisão
BOOLEAN, BOOL Boolean Valor booleano
DATETIME, TIMESTAMP LocalDateTime Data e hora
DATE LocalDate Apenas data
TIME LocalTime Apenas hora
JSON String Dados JSON
BLOB, BINARY byte[] Dados binários

⚙️ Opções de Configuração

Configuração de Anotações

  • Gerar Anotações JPA: Adicionar @Entity, @Table, @Column, @Id e outras anotações padrão JPA
  • Gerar Anotações Lombok: Adicionar anotações @Data, @NoArgsConstructor, @AllArgsConstructor
  • Gerar Anotações de Validação: Adicionar @NotNull, @Size e outras anotações Bean Validation
  • Implementar Interface Serializable: Fazer as classes geradas implementarem a interface de serialização

Configuração de Convenção de Nomenclatura

  • Habilitar CamelCase: user_nameuserName (Recomendado, segue convenções Java)
  • Manter Sublinhado: user_nameuser_name (Para requisitos especiais)

Configuração de Mapeamento de Tipos de Tempo

  • Mapear para Objetos de Tempo: DATETIMELocalDateTime (Recomendado, tipo seguro)
  • Mapear para Strings: DATETIMEString (Por considerações de compatibilidade)

🔧 Dicas de Uso

  1. Convenções de Nomenclatura: Escolha camelCase ou nomenclatura com sublinhado baseado nos requisitos do projeto
  2. Seleção de Anotações: Você pode gerar seletivamente anotações JPA, Lombok e de validação
  3. Configuração de Nome de Pacote: Você pode personalizar o nome do pacote para o código gerado
  4. Suporte à Serialização: Opção para implementar a interface Serializable
  5. Tratamento de Restrições: Reconhece automaticamente chaves primárias, restrições únicas, valores padrão, etc.
  6. Tipos de Tempo: Escolha mapeamento de objetos de tempo ou strings baseado nos requisitos do negócio

Esta ferramenta de conversão SQL DDL para Entidade Java é um assistente poderoso para desenvolvedores Java, tornando a criação de entidades de banco de dados simples e eficiente!