Hibernate 展示 SQL 语句中 ? 的值

Hibernate 显示 SQL 语句中 ? 的值

 Hibernate 显示 SQL 语句中 ? 的值

来源:http://www.blogjava.net/haha1903/archive/2007/07/18/130999.html
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 明显方便很多。

 

 

感受:

第一种方法没用过,不知道怎么用?作者的文档也写得不清楚。

 

第二种方法用过。