1、比較方便的辦法
在 log4j 的配置中加上
<logger name="org.hibernate.type" additivity="false">
<level value="debug" />
<appender-ref ref="CONSOLE" />
<appender-ref ref="FILE" />
</logger>
<logger name="org.hibernate.sql" additivity="false">
<level value="debug" />
<appender-ref ref="CONSOLE" />
<appender-ref ref="FILE" />
</logger>
其中 org.hibernate.sql 不知道有什么用。
2、使用 p6spy 來顯示 sql,配合 sqlprofile 比較方便,還可以使用 irontracksql。
sqlprofile 和 irontracksql 在得到 sql 的機制有些差別。
sqlprofile 是通過配置 log4j 的 socket append ,將 log 輸出到 sqlprofile 的監聽端口去。這樣在調試程序的時候,只要先啟動好 sqlprofile,就能得到 sql 了。
irontracksql 是在應用中監聽一個端口,隨應用啟動,irontracksql 啟動是連接到那個端口去得到 sql,所以要先啟動用戶,再讓 irontracksql 連過去。
猜測:irontracksql 性能會好一些,而且不想看 sql 可以斷下來。sqlprofile 則不行。但在調試程序的時候 sqlprofile 明顯方便很多。