Descobrindo o SQL gerado pela sua aplicação

  • 0

Descobrindo o SQL gerado pela sua aplicação

Category : Java , Linux , Oracle

0 Flares Twitter 0 Facebook 0 Filament.io Made with Flare More Info'> 0 Flares ×

Quando trabalhamos com frameworks como Hibernate que geram o comando SQL pra gente, temos uma idéia do que ele faz. Entretanto, quando se usa muitas composições com o o FetchType EAGER, a coisa começa a complicar.

Durante o desenvolvimento, temos ferramentas como o Hibernate Tools que podemos ver o SQL gerado, mas o verdadeiro problema é em ambiente de produção.


Vamos analisar o seguinte método abaixo e seus SQLs gerados:

Se você usa Hibernate e log4j, a solução é muito fácil, basta configurar duas opções:

E na configuração do hibernate.cfg.xml adicionar essas opções:

Você terá no seu log um resultado parecido com esse:

Mas se você não usa Hibernate, uma opção bem interessante é o P6Spy.

A idéia é que sua aplicação se conecte com ele, e depois ele se conecta ao seu banco de dados. Com isso, ele tem precisamente todos os SQLs que chegam lá.


[ Sua aplicação manda um SQL ]
=>
[ P6Spy escreve seu SQL em um log ]
=>
[ manda o SQL para o seu banco de Dados ]

A instalação dele é bem simples, ele tem uma biblioteca e um arquivo de propriedades.

O seu uso é bem simples, conforme exemplificado nesse blog:

1 – Baixe o arquivo p6spy-install.jar

2 – Edite o arquivo de propriedades apontando para o seu banco de dados e outras opções, como o caminho do arquivo spy.log

3 – Copie o arquivo de propriedades e a biblioteca para o CLASSPATH de sua aplicação

Se você usar Maven2 nos seus projetos, ao invés de copiar a biblioteca, basta adicionar a dependência:

4 – Faça a sua aplicação apontar para o Spy. No caso do Hibernate, mude o driver JDBC para o driver do Spy:

A mesma query que o Hibernate exibiu anteriormente é exibida dessa maneira:

No caso de você usar o MySQL , existe uma maneira bem mais fácil e prática de monitorar os seus SQLs, basta apenas acessar o arquivo de configuração do MySQL (my.ini em Windows / my.cnf em Linux) e tirar o comentário da linha:

Reinicie o banco de dados e acesse o arquivo mysqld.sql para acompanhar os SQLs gerados.
O mesmo comando anteriormente exibido no log do Spy é exibido aqui dessa maneira:

Pronto, agora ficou mais fácil de identificar os SQLs problemáticos da aplicação.

Boa sorte nos seus logs!

Fernando Boaglio, para a comunidade. =)


About Author

Fernando Boaglio

???

Leave a Reply

Quero saber mais sobre…

Inscreva-se para receber as novidades!

Arquivos

0 Flares Twitter 0 Facebook 0 Filament.io 0 Flares ×