3
respostas

Como criar um @Table ( catlog = {DINAMICO} )

Estou com um grande problema mapeando algumas entidades de um banco legado em SQL SERVER na empresa onde trabalho, pois a base de homologação fica em um Catalog e a base de Produção fica em outro com nome diferente.

Segue exemplo de uma das entidades mapeadas

@Data
@Entity
@Table(name="[CIDADE]", schema = "[PORTAL]", catalog="[PortalWeb]")
public class Cidade {

    @Id
    @Column(name ="ID_CIDADE")
    private Long idCidade;

    @Column(name ="NOME_CIDADE")
    private String nome;

    @Column(name ="ATIVO")
    private String ativo;

    @Column(name ="COD_SIGA")
    private String codigoSiga;

    @Column(name ="UF")
    private String uf;

    @Column(name ="ID_TIPO_CIDADE")
    private Long idTipoCidade;

    @Column(name ="CATEGORIA")
    private String categoria;

    @Column(name ="ESCRITORIO")
    private String escritorio;

    @Column(name ="CONTRATO")
    private String contrato;

}

Na homologação o Catalog chama PortalWebHomolog porem na produção ele chamado PortalWeb, e por conta disso quando eu preciso fazer deploy da aplicação em produção, tenho que mudar todas propriedades das entidades manualmente (pior cenário possível).

Existe alguma forma de deixar essa propriedade de forma dinâmica, ou seja, algo como uma constante dentro de uma application.properties ?

Ou algum parâmetro via string de conexão no jdbc que eu consiga setar esse catlog ?

Sei que no .Net existe uma parâmetro chamado Initial Catalog que é possível passar via string de conexão, porem não encontrei o semelhante para JDBC.

3 respostas

Uma das soluções possíveis seria utilizar o Maven para controlar essas propriedades de ambientes, assim você teria uma propriedade no seu arquivo pom.xml que mudaria baseado no ambiente a ser feito o deploy e assim você substituiria o seu parâmetro catalog por algo do tipo: ${catalog}

William, poderia me enviar algum exemplo para eu conseguir realizar esse processo?

Estava tentando algo com o Springboot usando uma propriedade pelo arquivo properties e tentando recuperar pelo @Value{catalog} mas não obtive sucesso.

Hoje de noite te mando um exmplo do que é necessário no arquivo pom.xml e da alteração na classe.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software