Conceitualmente a engenharia reversa é um estudo do processo de funcionamento de um objeto, podendo ser um sistema mecânico, software ou banco de dados; através da análise de sua estrutura, função e operação.

No Cronapp, a funcionalidade Engenharia reversa converte as tabelas de um banco de dados externo, pré-configurado, em classes do diagrama de dados. Dessa forma é possível gerar as camada de persistência e páginas CRUD com base nessa estrutura. 

Além disso, o Cronapp permite que tabelas virtuais (também chamadas de views) sejam adicionadas no diagrama de dados através de uma reengenharia específica. Uma tabela virtual nada mas é que uma consulta SQL que contém linhas e colunas e que pode receber comandos, como declarações JOIN, WHERE e etc.

A engenharia reversa não funciona no banco H2.

Pré-requisitos

  • Banco de dados relacional externo configurado no Cronapp, como um MySQL, SQL Server, etc. Caso não saiba como configurar um banco no Cronapp, acesse o link Banco de dados;

Figura 1.1 - Exemplo de banco de dados externo configurado no Cronapp

  • Novo diagrama de dados com o banco de dados selecionado (destaque da Figura 1.2).

Figura 1.2 - Novo diagrama de dados com o banco de dados selecionado

Engenharia reversa

A opção gerar diagrama a partir do banco de dados (destaque da Figura 2.1) abre uma janela de seleção mostrando as tabelas existentes no banco. Geralmente, as tabelas novas vem previamente selecionadas, mas é possível selecionar as tabelas desejadas.

Ao modificar os filtros (destaques 5 e 6 da figura 2.1), as seleções feitas nas tabelas (destaque 7) não são alteradas. Esse recurso pode ser útil para selecionar poucas tabelas em bancos que possuem muitas tabelas e vários esquemas.


Figura 2.1 - Janela de seleção de tabelas


  1. Em estratégia de chaves: define a forma de como as chaves da tabela serão geradas, podendo ser:
    • Auto: gera as tabelas sem configurar o campo tipo de PK (auto completar identity ou UUID), necessário selecionar manualmente em cada tabela depois;
    • Forçar auto geração: gera as tabelas com o campo tipo de PK configurado para identity quando a PK for inteiro ou UUID quando o PK for varchar;
    • Descobrir sequências: descobre a sequência utilizada no campo de auto-incremento de acordo com a sequência informada no campo Sequence Template.
  2. Sequence Template: esse campo obtém o Sequence utilizado na chave primária e, se houver, utilizará ele para gerar novos registros.
  3. Usar nomes reais do banco: o gerar a camada de persistência das classes criadas do Diagrama, o Cronapp sempre tenta converter os nomes das classes para o padrão UperCamelCase, atributos para o padrão lowerCamelCase e retirar caracteres como underline “_”, com o objetivo de melhorar a legibilidade do código gerado. Porém, ao obter as classes a partir da engenharia reversa, pode ser necessário manter a mesma grafia das tabelas e colunas do banco de dados para permitir, por exemplo, reutilizar consultas SQL. Exemplo: atributo_1, NomeDoAtributo, LIVROS.
  4. Extrair Relações: mantém o relacionamento padrão do Diagrama de dados (ex,: 1toN), exibindo a linha entre as caixas de classes e na propriedade Tipo do atributo de chave estrangeira exibirá o nome da classe relacionada. Ao desmarcar essa opção, não será exibido a linha de relacionamento e a propriedade Tipo do atributo de chave estrangeira exibirá o tipo real do atributo, exemplo:  string ou int. Em caso de chave composta, serão exibidos mais de um tipo real das chaves estrangeiras.
  5. Busca: pesquisa as tabelas que contém a sequência de palavras informadas.
  6. Filtrar por Esquemas: caixa de seleção que exibe as instâncias/esquemas informados ao cadastrar a conexão do banco de dados no Cronapp. Ela permite filtrar as tabelas e views das instâncias/esquemas selecionados.
    Obs.:  esse campo só será exibido se o banco possuir esse recurso (exemplo banco de dados Oracle).
  7. Caixa de seleção: permite selecionar apenas as tabelas que serão obtidas a partir da engenharia reversa. As opções selecionadas serão mantidas mesmo após alteração nos filtros.
  8. Lista as tabelas presentes no banco de dados.
  9. Tipo: informa o tipo da tabela.
  10. "...": abre a janela de seleção de colunas da tabela correspondente.
  11. Coletar: faz a engenharia reversa da configuração presente na janela e fecha a janela.
  12. Cancelar: cancela a engenharia reversa e fecha a janela.

Também é possível escolher as colunas de cada tabela (Figura 2.2) que farão a engenharia reversa - ou seja, caso não queira gerar todo o conteúdo, é possível filtrar apenas as colunas desejadas.


Quando um campo chave (PK) no banco de dados PostgreSQL estiver definido com o tipo UUID, o Cronapp automaticamente configurará a propriedade Tipo de PK como "Nova GUID".


Figura 2.2 - Escolher as colunas para serem geradas


  1. Busca: pesquisa as colunas que contém a sequência de palavras informadas.
  2. Marca / Desmarca as colunas da tabela, podendo ser todas ou uma por vez.
  3. Lista as colunas presentes na tabela.
  4. Informa os tipos das colunas correspondentes.
  5. Selecionar: salva a configuração feita na escolha de colunas e fecha a janela.
  6. Cancelar: cancela a configuração feita na escolha de colunas e fecha a janela.

Sincronizar views

A opção sincronizar views (destaque da Figura 3) abre a mesma janela que a opção gerar diagrama a partir do banco de dados contendo as mesmas configurações, sua diferença se encontra na listagem das tabelas, pois ela somente apresenta as tabelas virtuais presentes no banco de dados.

Uma tabela virtual sempre mostra os resultados de dados atualizados, pois ela não armazena os dados - ela somente os recria na memória. Mais informações em Visão (Banco de dados).



Figura 3 - Janela de engenharia reversa para tabelas virtuais

Nessa página