Intercepte as instruções JDBC no banco de dados usando P6Spy em um aplicativo de hibernação

StackOverflow https://stackoverflow.com/questions/5044804

  •  15-11-2019
  •  | 
  •  

Pergunta

Estou desenvolvendo um aplicativo de console de hibernação e consulte este artigo http://www.mkyong.com/hibernate/how-to-display-hibernate-sql-parameter-values-solution/ configurar o P6Spy para ver qual é o valor real do "(?)" do SQL gerado pelo Hibernate.

A configuração deve funcionar bem, pois posso ver mensagens de informação/depuração emitidas pelo P6Spy durante a inicialização do aplicativo.Porém, depois disso, o P6Spy parece não conseguir interceptar nenhuma instrução JDBC.Do log gerado pelo hibernate (por exemplo: Hibernate: insert into Module (projectName, moduleName, projectId) values (?, ?, ?) ), pode-se ter certeza de que as instruções JDBC já foram enviadas ao banco de dados.

A seguir está minha configuração:

hibernate.cfg.xml

  • Já especificado para usar o driver p6spy: <property name="hibernate.connection.driver_class">com.p6spy.engine.spy.P6SpyDriver</property>
  • Já ligou a propriedade Hibernate.show_sql:<property name="hibernate.show_sql">true</property>

espião.propriedades

  • Já mudou para usar meu driver JDBC de banco de dados real, filtro definido como false, incluindo categorias já definidas explicitamente para registrar qualquer coisa.
module.log=com.p6spy.engine.logging.P6LogFactory
realdriver=oracle.jdbc.driver.OracleDriver
filter=false
dateformat=yyyy.MM.dd HH:mm:ss
excludecategories=
includecategories=error, info, batch, debug,statement,commit,rollback,result
appender=com.p6spy.engine.logging.appender.StdoutLogger

Perdi alguma configuração importante ??

Foi útil?

Solução 3

Finalmente, eu desisto P6Spy pois é a biblioteca antiga cuja versão mais recente remonta a 2003.Eu recorro a usar outro código aberto gratuito semelhante chamado log4jdbc para interceptar as instruções JDBC, consulte esse para mais informações se você estiver interessado.

Outras dicas

Nunca usei o P6Spy, mas você pode fazer com que as variáveis ​​​​de ligação sejam enviadas para o seu log.Tente colocar isso em seu arquivo log4j.properties ou xml.

log4j.category.org.hibernate.type=DEBUG, CONSOLE

A causa comum para esse tipo de problema é que o driver JDBC é carregado antes do P6SpyDriver.Você pode contornar esse problema definindo deregisterdrivers=true em spy.properties.

BTW - Este problema foi corrigido na versão 2.0-alpha-1.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top