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