Intercepte las declaraciones JDBC a la base de datos utilizando P6SPY en una aplicación Hibernate

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

  •  15-11-2019
  •  | 
  •  

Pregunta

Estoy desarrollando una aplicación de consola de hibernación y consulte este artículo http://www.mkyong.com/hibernate/how-to-display-hibernate-sql-parameter-values-solution/ Para configurar el P6SPY para ver cuál es el valor real de la "(?)" del SQL generado por el hibernado.

La configuración debe funcionar bien, ya que puedo ver los mensajes de información / depuración de la salida de P6SPY durante la aplicación se inicia. Sin embargo, después de eso, P6SPY parece que no puede interceptar ninguna declaración de JDBC. Desde el registro generado por hibernación (por ejemplo: Hibernate: insert into Module (projectName, moduleName, projectId) values (?, ?, ?)), puede estar seguro de que las declaraciones JDBC ya se envían a la base de datos.

El siguiente es mi configuración:

hibernate.cfg.xml

  • ya especificado para usar el P6SPY Conductor: <property name="hibernate.connection.driver_class">com.p6spy.engine.spy.P6SpyDriver</property>
  • ya encendido el HIBERNATE.SHOW_SQL PROPIEDADES: <property name="hibernate.show_sql">true</property>

    spy.properties

    • ya cambió para usar mi real Conjunto de controladores JDBC de la base de datos, set Falso, includecategorías ya establecer explícitamente para registrar cualquier cosa.
      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
      

      ¿Extraño alguna configuración importante?

¿Fue útil?

Solución 3

Finally , I give up P6Spy as it is the old library which the latest version is back to 2003. I resort to use another similar free open source called log4jdbc to intercept the JDBC statements , see this for more info if you are interested.

Otros consejos

I've never used P6Spy, but you can get the bind variables to output to your log. Try putting this in your log4j.properties or xml file.

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

The usual cause for this type of problem is that the JDBC driver is loaded before the P6SpyDriver. You can get around this problem by setting deregisterdrivers=true in spy.properties.

BTW - This issue was fixed in 2.0-alpha-1.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top