【hibernate系列】采用p6spy+SQLProfiler完整显示hibernate的S...
为什么80%的码农都做不了架构师?>>>
虽然在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记录了数据库的访问情况。
用p6spy可以达到显示的那些参数原值的目的,但可读性差。可以利用SQL Profiler来处理这个事情。
解压sqlprofiler-0.3-bin.zip,把spy.properties拷贝到项目中,覆盖之前的spy.properties,要改的也只是realdriver,可以看到配置文件中有log4j,这就需要我们吧log4j的jar拷贝到应用中。
sqlprofiler.jar并不需要拷贝到应用中,他需要我们来执行:
java -Xmx256m -jar sqlprofiler.jar
spy.properties片断:
log4j.appender.SQLPROFILER_CLIENT=org.apache.log4j.net.SocketAppender
log4j.appender.SQLPROFILER_CLIENT.RemoteHost=localhost
log4j.appender.SQLPROFILER_CLIENT.Port=4445
log4j.appender.SQLPROFILER_CLIENT.LocationInfo=true
p6spy 通过SocketAppender 向sqlprofiler发送日志信息,sqlprofiler启动后就开始监听本机的4445端口,在应用中执行数据库操作后就可以在sqlprofiler的界面中看到sql语句的执行结果。
最后一个需要注意的问题就是需要先启动 SQLProfiler,此时状态栏显示P6SPY为未连接状态,然后再启动应用程序或者 Tomcat 等应用服务器,应用运行后SQLProfiler状态栏就会变为连接状态。这是因为 SQLProfiler 默认使用的是 Log4j 的 SocketAppender,所以要先启动。否则,会因你的应用程序或应用服务器中的 Web 应用之类的因连接不到 Socket 的服务器(SQLProfiler 相当于 Socket 的服务器)而发生错误,可以通过 SQL Profiler 控制界面最下面的连接状态就可以知道是否有程序连接上来。
转载于:https://my.oschina.net/iblike/blog/37612
【hibernate系列】采用p6spy+SQLProfiler完整显示hibernate的S...相关推荐
- Spring 系列,第 2 部分: 当 Hibernate 遇上 Spring
为什么80%的码农都做不了架构师?>>> 在这个系列的 前一期中,我介绍了 Spring 框架的 7 个模块,包括 Spring AOP 和控制反转(IOC)容器.然后我用一个 ...
- 【SSH框架】之Hibernate系列一
微信公众号:compassblog 欢迎关注.转发,互相学习,共同进步! 有任何问题,请后台留言联系! 1.Hibernate框架概述 (1).什么是Hibernate Hibernate是一个开放源 ...
- hibernate系列之四
数据库中表之间的关系: 一对一.一对多.多对多 一对多的建表原则:在多的一方创建外键指向一的一方的主键: 多对多的建表原则:创建一个中间表,中间表中至少有两个字段作为外键分别指向多对多双方的主键: 一 ...
- Hibernate 系列 02 - Hibernate介绍及其环境搭建
引导目录: Hibernate 系列教程 目录 昨晚喝多了,下午刚清醒,继续搞Hibernate.走起. 觉得还行的话,记得点赞哈,给我这个渣渣点学习的动力.有错误的话也请指出,省的我在错误上走了不归 ...
- 阿里巴巴的持久层抛弃了hibernate,采用的却是MyBatis框架。。。
最近一直在研究MyBatis源码,作为国内经常使用的持久层框架,其内部代码的设计非常优秀.比如在开发过程中,有能力对框架进行深度的定制化开发,解决BUG也更加得心应手!另外学习开发者是如何设计高扩展性 ...
- [Hibernate系列—] 2. 创建SessionFactory 与 Session
Configuration 对象创建 要创建SessionFactory , 首先要创建Configuration 对象. 这个对象就是去读取hibernate 的一些配置信息. 默认状况下, hib ...
- (Hibernate进阶)Hibernate系列——总结篇(九)
这篇博文是hibernate系列的最后一篇,既然是最后一篇,我们就应该进行一下从头到尾,整体上的总结,将这个系列的内容融会贯通. 概念 Hibernate是一个对象关系映射框架,当然从分层的角度看,我 ...
- hibernate系列之一
通过自己不断的学习框架以及相关知识的学习,自己学会总结了学习路上遇到的一些问题以及疑惑,自己现在跟着相关的学习资料又进行了一些总结和实践,希望通过自己走过的学习之路能够帮助小伙伴们解决一些学习上问题或 ...
- [Hibernate系列—] 3. 映射文件与使用SchemaExport自动产生Schema
自定义映射文件 这里的映射文件指的是对应到数据库表的xml 的定义文件. 对应的每个数据库表栏位, 可以定义的属性有: 属性名 类型 Description length number 栏位的长度 p ...
最新文章
- 聊聊高并发(十六)实现一个简单的可重入锁
- IDC:2018年中国制造业十大预测
- 全球首次!AI研制新药物仅需18个月,李开复梁颕宇:AI医疗已突破,但只打1分...
- Github 工作流程
- 类.接口.多态.向上转型.向下转型
- webservice发布
- discord linux_最好的Discord机器人来启动服务器
- CAF(C++ actor framework)(序列化之结构体,任意嵌套STL)(一)
- putty连接linux上传python,通过PuTTY用于SSH的Python脚本
- oracle中的fetchsize,oracle setFetchsize() 优化查询速度
- 微信小程序傻瓜制作_傻瓜式教程:做一个带优惠券的微信小程序
- 去重 属性_Javascript算法 — 数组去重
- 从零实现深度学习框架——实现自己的Tensor对象
- 无标度网络的生成模型
- 3D Photography using Context-aware Layered Depth Inpainting
- 优思学院|六西格玛:如何最有效地制定目标?
- godis之aof持久化
- 推荐几款基于 Markdown 在线制作简历的网站
- nginx - nginx的安装部署
- CTF pwn题堆入门 -- Unsorted bin
热门文章
- linux进程自动关闭与dmesg的使用
- C#快速整理代码格式
- Json在线格式化站点
- python微信好友分析源代码_搞事情了 | 教你用Python分析微信好友信息(内附完整代码)...
- 职业梦想是计算机的英语作文,我的梦想职业英语作文
- gps有几个轨道面_嫦娥五号轨道器和返回器组合体成功进入月地转移轨道
- python ggplot画等值线图,是否可以在Python ggplot上绘制多折线图?
- php csv,php csv操作类代码
- python中sys用法_python中os和sys模块的区别与常用方法总结
- 二维空间有没有厚度_平面设计并不平!空间构成了解一下