DClick

Arquivos para April, 2007

Debugando Query do Hibernate

Categorias relacionadas: Hibernate, Java

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.

# 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!

Por Daniel Passos em 9/April/2007
3 Comentários »


No Translations