默認情況下,hibernate/JPA 在server.log中記錄的SQL語句,參數都是用?代替的,這樣不太方便. 網上留傳的p6spy在最新的jboss上(EAP 6.0+版本)貌似已經不起作用了(至少我沒弄成功過)
幸好,Jboss已經自帶了jdbc監控功能,開啟步驟如下:
1、standalone.xml中增加

1 <logger category="jboss.jdbc.spy"> 2 <level name="DEBUG"/> 3 </logger>
2、所有的DataSouce節點上,增加spy="true",參考下面這樣:
1 <datasource jta="false" jndi-name="java:/XE" pool-name="XE" enabled="true" spy="true" use-ccm="false"> 2 <connection-url>jdbc:oracle:thin:@localhost:1521:XE</connection-url> 3 <driver-class>oracle.jdbc.OracleDriver</driver-class> 4 ...
好了,server.log中就會記錄詳細的sql信息,類似下面這樣:
...
11:26:28,788 INFO [stdout] (http-localhost/127.0.0.1:8080-2) Hibernate:
11:26:28,788 INFO [stdout] (http-localhost/127.0.0.1:8080-2) /* insert org.jboss.as.quickstart.hibernate4.model.Member
11:26:28,788 INFO [stdout] (http-localhost/127.0.0.1:8080-2) */ insert
11:26:28,788 INFO [stdout] (http-localhost/127.0.0.1:8080-2) into
11:26:28,788 INFO [stdout] (http-localhost/127.0.0.1:8080-2) MemberHibernate4Demo
11:26:28,788 INFO [stdout] (http-localhost/127.0.0.1:8080-2) (address, email, name, phone_number, id)
11:26:28,788 INFO [stdout] (http-localhost/127.0.0.1:8080-2) values
11:26:28,788 INFO [stdout] (http-localhost/127.0.0.1:8080-2) (?, ?, ?, ?, ?)
11:26:28,788 DEBUG [jboss.jdbc.spy] (http-localhost/127.0.0.1:8080-2) java:/XE [PreparedStatement] setString(1, shanghai,China)
11:26:28,788 DEBUG [jboss.jdbc.spy] (http-localhost/127.0.0.1:8080-2) java:/XE [PreparedStatement] setString(2, jimmy.yang@jboss.org)
11:26:28,789 DEBUG [jboss.jdbc.spy] (http-localhost/127.0.0.1:8080-2) java:/XE [PreparedStatement] setString(3, jimmy)
11:26:28,789 DEBUG [jboss.jdbc.spy] (http-localhost/127.0.0.1:8080-2) java:/XE [PreparedStatement] setString(4, 13916752129)
11:26:28,789 DEBUG [jboss.jdbc.spy] (http-localhost/127.0.0.1:8080-2) java:/XE [PreparedStatement] setLong(5, 4)
...
文章列表