Перехватывать операторы 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.