zoukankan      html  css  js  c++  java
  • 采用p6spy完整显示hibernate的SQL语句

    虽然在hibernate中有show_sql选项,但是显示出来的语句大多类似

    select * from xxx where value=?

    但是有时候我们需要得到完整的SQL语句,怎么办呢?使用P6SPY就可以完成这个任务

    p6spy是一个开源软件,它可以跟踪任何使用jdbc的应用产生的数据库操作。特别适合于监控ejb服务器产生的 sql statements。
    官方网址:http://www.p6spy.com/
    目前p6spy 适用的应用服务器包括jboss, atg, orion, jonas, iplanet, weblogic, websphere, resin and tomcat.

    下面我介绍一下p6spy在tomcat应用程序上安装的步骤:
    (1)http://www.p6spy.com/download.html ,下载zip包
    (2)解压出p6spy.jar spy.properties两个文件
    (3)将p6spy.jar 放入应用程序的WEB-INF/lib目录,将spy.properties放入WEB-INF/classes目录
    (4)修改spy.properties

    realdriver =com.mysql.jdbc.Driver 将这行前面的#去掉
    logfile = c:/spy.log 修改一个你需要的日志文件名

    (5)修改hibernate.xml,修改connection.driver_class的值为com.p6spy.engine.spy.P6SpyDriver
    (6)重启tomcat
    (7)这样在c:/下的spy.log记录了数据库的访问情况。

    驱动程序加载先后的问题解决
    如果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,重新运行即可。

    5.在spring 配置文件中配置如下:

    <!-- P6SPY dataSource target --> 
    <bean id = "dataSourceTarget" class = "org.spring framework.jdbc.datasource.DriverManagerDataSource" > 
      <property name = "driverClassName" value = "oracle.jdbc.OracleDriver" /> 
      <property name = "url" value = "jdbc:oracle:thin:@localhost:1521:testdb" /> 
      <property name = "username" value = "tet" /> 
      <property name = "password" value = "test" /> 
    </bean > 
    
    <!-- dataSource --> 
    <bean id = "dataSource4develop" class = "com.p6spy .engine.spy.P6DataSource" destroy-method = "close" > 
      <constructor-arg > 
        <ref local = "dataSourceTarget" /> 
      </constructor-arg > 
    </bean >
  • 相关阅读:
    NullPointerException
    面试oracle 经常问的一个问题- 事务
    python 之 import、from、as 关键字的 白话 解释与例子
    python 学习 之 第二章(条件、循环和其他语句)
    python学习 之 第一章 (简单例子与常用数据类型)
    python中常用函数含义记录
    python 2 版本中的input() 和 raw_input() 函数的比较
    字符串处理关键字str 和 repr
    文件操作-一个可以直接复制文件数据的小程序
    C语言 32个关键字
  • 原文地址:https://www.cnblogs.com/eastson/p/3884135.html
Copyright © 2011-2022 走看看