Hibernate SQL标准输出

目前很多公司的项目都采用了sshssi框架,在该框架下的SQL输出串不能显示SQL语句里所包含的参数,调试起来相当麻烦。通过P6spy框架来进行SQL监视,可以将SQL MAP中的SQL语句包含参数完整输出。

以下p6spyssh/ssi整合的方法:
 
1.
p6spy官方网站,下载p6spy.jar,放在lib目录下,将spy.properties放在 web-inf/classes下面(工作区最好是英文目录且无空格)。


2.
修改spy.properties,把realdriver 改为项目里使用的JDBC驱动名,如 realdriver=com.mysql.jdbc.Driver,其他的realdriver全部用#注释掉,修改 logfile=指定的SQL日志输出文件, logfile = d:/spy.log ,生成的SQL将会被写到到这个文件,只要执行SQL后查看该文件即可。

3.如果spy.log里出现以下异常:
  <配置了的程序的数据库驱动名称> is a real driver in spy.properties, but it has been loaded before p6spy. p6spy will not wrap these connections. Either prevent the driver from loading, or try setting 'deregisterdrivers' to true in spy.properties 
  需把spy.properties文件里的deregisterdrivers=false改为deregisterdrivers=true,然后重新运行。

 

4. 修改Spring配置文件,一般是applicationContext.xml
   
把原来的数据源定义注释掉,然后加入以下配置:
    <bean id="dataSourceTarget" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="(jdbc
驱动名,com.mysql.jdbc.Driver)" />       
    <property name="url" value="<URL>" />       
    <property name="username" value="<
用户名>" />       
    <property name="password" value="<
密码>" />
  </bean>
  
  <bean id="dataSource" class="com.p6spy.engine.spy.P6DataSource" destroy-method="close">          
        <constructor-arg>          
            <ref local="dataSourceTarget"/>          
        </constructor-arg>          
    </bean> 


5.
完成。

 

另外补充一点,根据各项目的不同对事物的管理不同,第5部根据项目而定

你可能感兴趣的:(调试hql)