Перехватывать операторы JDBC в базе данных с помощью P6Spy в приложении гибернации

Я разрабатываю консольное приложение hibernate и обращаюсь к этой статье http://www.mkyong.com/hibernate/how-to-display-hibernate-sql-parameter-values-solution/ чтобы настроить P6Spy, чтобы увидеть, что фактическое значение "(?)" SQL, сгенерированного Hibernate.

Настройка должна работать нормально, так как я вижу информационные / отладочные сообщения, выводимые P6Spy во время запуска приложения. Однако после этого P6Spy кажется, что он не может перехватывать какие-либо операторы JDBC. Из журнала, сгенерированного Hibernate (например: Hibernate: insert into Module (projectName, moduleName, projectId) values (?, ?, ?)), можно быть уверенным, что операторы JDBC уже отправлены в базу данных.

Ниже приведены мои настройки:

hibernate.cfg.xml

  • Уже указано использовать драйвер P6Spy: <property name="hibernate.connection.driver_class">com.p6spy.engine.spy.P6SpyDriver</property>
  • Уже включено свойство hibernate.show_sql: <property name="hibernate.show_sql">true</property>

spy.properties

  • Уже изменено использование моего фактического драйвера JDBC базы данных, фильтр установлен на false, includecategories уже явно настроен на запись чего-либо.
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

Я пропускаю какие-либо важные настройки?

3 ответа

Решение

Наконец, я сдаюсь P6Spy так как это старая библиотека, последняя версия которой вернулась в 2003 году. Я прибегаю к использованию другого аналогичного бесплатного открытого источника под названием log4jdbc чтобы перехватить утверждения JDBC, см. это для получения дополнительной информации, если вы заинтересованы.

Я никогда не использовал P6Spy, но вы можете получить переменные связывания для вывода в ваш журнал. Попробуйте поместить это в свой файл log4j.properties или xml.

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

Обычно причиной такого типа проблем является то, что драйвер JDBC загружается до P6SpyDriver. Вы можете обойти эту проблему, установив deregisterdrivers=true в spy.properties.

Кстати - эта проблема была исправлена ​​в 2.0-альфа-1.

Другие вопросы по тегам