Abfangen der JDBC-Anweisungen an die Datenbank mit P6Spy in einer Hibernate-Anwendung

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

  •  15-11-2019
  •  | 
  •  

Frage

Ich entwickle eine Hibernate-Konsolenanwendung und verweise auf diesen Artikel http://www.mkyong.com/hibernate/how-to-display-hibernate-sql-parameter-values-solution/ um den P6Spy einzurichten, um zu sehen, was der tatsächliche Wert des "(?)" der vom Ruhezustand generierten SQL.

Das Setup sollte einwandfrei funktionieren, da ich Info- / Debug-Meldungen sehen kann, die von P6Spy während des Starts der Anwendung ausgegeben werden.Danach scheint P6Spy jedoch keine JDBC-Anweisungen mehr abfangen zu können.Aus dem von Hibernate generierten Protokoll (zB: Hibernate: insert into Module (projectName, moduleName, projectId) values (?, ?, ?) ), kann sichergestellt werden, dass die JDBC-Anweisungen bereits an die Datenbank gesendet wurden.

Das Folgende ist meine Einstellung:

Ruhezustand.cfg.XML

  • Bereits spezifiziert, um den P6Spy zu verwenden Treiber : <property name="hibernate.connection.driver_class">com.p6spy.engine.spy.P6SpyDriver</property>
  • Bereits eingeschaltet die Ruhezustand.show_sql Eigenschaft :<property name="hibernate.show_sql">true</property>

Spion.Eigenschaft

  • Bereits geändert, um meine aktuelle zu verwenden datenbank-JDBC-Treiber , Filter auf gesetzt falsch , includecategories bereits explizit so eingestellt, dass alles protokolliert wird.
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

Vermisse ich eine wichtige Einstellung??

War es hilfreich?

Lösung 3

Schließlich gebe ich auf P6Spy da es sich um die alte Bibliothek handelt, stammt die neueste Version aus dem Jahr 2003.Ich greife auf eine andere ähnliche kostenlose Open Source namens zurück log4jdbc Informationen zum Abfangen der JDBC-Anweisungen finden Sie unter dieser für weitere Informationen, wenn Sie interessiert sind.

Andere Tipps

Ich habe P6Spy noch nie verwendet, aber Sie können die Bindevariablen in Ihr Protokoll ausgeben lassen.Versuchen Sie, dies in Ihre log4j.properties- oder XML-Datei einzufügen.

log4j.category.org.hibernate.type=DEBUGGEN, KONSOLE

Die übliche Ursache für diese Art von Problem ist, dass der JDBC-Treiber vor dem P6SpyDriver geladen wird.Sie können dieses Problem umgehen, indem Sie deregisterdrivers=true in spy setzen.Eigenschaft.

Übrigens - Dieses Problem wurde in 2.0-alpha-1 behoben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top