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 明显方便很多。