Перехватывать операторы JDBC в базе данных с помощью P6Spy в приложении гибернации - PullRequest
4 голосов
/ 18 февраля 2011

Я разрабатываю консольное приложение 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, уже включенные категории явно настроен на запись чего-либо.
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 ]

1 голос
/ 16 ноября 2013

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

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

1 голос
/ 18 февраля 2011

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

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

0 голосов
/ 11 ноября 2011

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

...