Como identificar o SGBD que estou conectado
15/03/2018 10:16
1
Olá, minha primeira participação!

Bom utilizo em um projeto Spring boot (1.5.10.RELEASE) + QueryDSL.
Utilizo também JPASQLQuery do QueryDSL.
A aplicação é multi banco (Oracle, PostgreSQL, MySQL, SQLite) e para realizar a instância de JPASQLQuery preciso informar um template ou uma configuração, para que esse processo seja dinâmico, independente do banco de dados que utilizo preciso identificar qual SGBD estou utilizando no memento.

Além do JPASQLQuery utilizo também templates customizados para operações com banco, como por exemplo MD5, concat, cast explícitos... etc, esses templates customizados são diferentes para cada um dos bancos de dados, pois cada um realiza a operação de uma forma.

Em resumo, como posso identificar o SGBD? Na classe QueryDslRepositorySupport tenho acesso ao entityManager, que achei que poderia ser a fonte da informação, entretanto ele não fornece acesso a informações de database, como implementado em EntityManagerFactoryBuilder -> HibernateJpaVendorAdapter -> AbstractJpaVendorAdapter (private Database database).

Como posso conseguir informações do SGBD?
Tags: spring, querydsl, jpasqlquery


0
A API JDBC tem uma classe, chamada DatabaseMetadata (https://docs.oracle.com/javase/7/docs/api/java/sql/DatabaseMetaData.html) que você pode obter a partir de um objeto Connection.

E nela tem uma função chamada getDatabaseProductName(), que te retorna qual o SGBD contra o qual você está conectado.

Seria algo mais ou menos assim o seu código:


class SeuBean {
   @Autowired
    private DataSource dataSource;

     public String seuSGBD() {
        return dataSource.getConnection().getMetadata().getProductName();
     }
}


0
Obrigado, isso funcionou como esperado.
19/03/2018 09:14



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.

Podcast da itexto



Aprenda Groovy e Grails, Spring e mais com a Formação itexto!

Livro de Spring


/dev/All

Os melhores blogs de TI
em um único lugar!

 
Spring Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.