Debugando Query do Hibernate
Esta semana tive um problema com uma query que teoricamente estava certa mas não estava exatamente fazendo o que eu queria.
A primeira opção para debugar é setar o atributo show_sql = true e verificar a query que está sendo montada. Outra otima opção que pode ajudar muito e economizar tempo, é setar a propriedade format_sql = true.
Porem em nenhuma delas você terá acesso as variáveis que estão sendo setadas na sua query. Caso você tenha configurado o log4j.properties provavalmente as variaves serão gravadas em arquivo ( caso você assim o tenha configurado ) mas dificilmente está será mostrada no console. Geralmente configuramos o log4j.properties para logar tudo (ALL) com isso dificultando nosso trabalho para encontrar alguma coisa quanto realmente precisamos. O projeto caveatemptor (projeto do livro Java Persistence with Hibernate) trás uma ótima sugestão de arquivo de configuração para debugar as querys que estão sendo geradas.
1 2 3 4 5 6 7 8 9 10 11 | # Direct log messages to stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{6}:%L - %m%n # Root logger option log4j.rootLogger=WARN, stdout # Log JDBC bind parameter runtime arguments log4j.logger.org.hibernate.type=DEBUG |
A grande sacada do arquivo acima e logar apenas as classes do pacote org.hibernate.type com isso você terá em seu console a query ( formatada ) e as variáveis que foram setadas na execução da mesma. Apenas o necessário para entender o que esta acontecendo!

3 comentários
E só depois de 1 ano que vc me fala isso!!!!!!
Muito bom…
[]s
Cara entra em contato comigo por favor, preciso falar com vc…
Obrigado
Poxa! Não sabia desse logger… muito melhor que o show_sql que só nos da os prepared statement!!
Deixe Seu Comentário