Hibernate SQL实际sql语句监控- p6spy+hibernate+proxool 设置

 

 

由于ORM工具的缘故,我们调试程序的时候远没有直接在程序里直接写个string的SQL简单,想当年查个sql是有多么的幸福,一行sql = "select * from ..."找找就行了, 现在用了hibernate, 就算在JPA中开了show_sql=true, 打出来的还是一串 "name = ? and id = ? "

好在找到一个工具, p6spy, 作为真正JDBC的一个代理, 截获了所有sql, 让我们看到一个真实sql的机会。 先下载,以下配置默认跟我目前项目一样

hibernate+proxool+postgresql      改后的部署层次为hibernate+proxool+p6spy+postgresql

p6spy 下载后,将jar包解压, 步骤很简单:

  1. p6spy.jar放到web程序的web-inf/lib下。
  2. spy.properteis 放入web-inf/classess下

spy.properties上将以下属性改一下就好了:

realdriver=org.postgresql.Driver   //真正的JDBC驱动名

deregisterdrivers=true

appender=com.p6spy.engine.logging.appender.StdoutLogger  //输出到控制台

然后改proxool连接池的配置, 用p6spy代替真正的JDBC驱动, 作为一个中间代理,截获SQL

proxool.properties 

jdbc-0.proxool.driver-class=com.p6spy.engine.spy.P6SpyDriver

配置完成了,打开IDE,欣赏下久违的sql语句吧

 

本文出自 “祝坤荣” 博客,请务必保留此出处

时间: 2024-09-22 17:19:26

Hibernate SQL实际sql语句监控- p6spy+hibernate+proxool 设置的相关文章

java-请问Hibernate的native sql 怎么优化select *?

问题描述 请问Hibernate的native sql 怎么优化select *? 如题,我们都理解hibernate不是万能的,被迫在很多地方应用nativeQuery 但nativeQuery是我们手写的,为了书写方便总是会写成select * from... 这样一来就失去了语句级别的自动优化 现在需要对sql查询进行优化处理,我可不想一个一个的把sql字段搬到nativeQuery语句里面去!那太可怕了! 解决方案 http://vinfai.iteye.com/blog/1629134

hibernate 中写sql 的问题

问题描述 hibernate 中写sql 的问题 public List findCartByOrderstatus(final String ostatus,final Users u) { return this.getHibernateTemplate().execute(new HibernateCallback(){ @Override public List doInHibernate(Session session) throws HibernateException, SQLEx

Java Hibernate中使用HQL语句进行数据库查询的要点解析_java

一.实体对象查询 实体对象查询是hql查询的基础,作为一种对象查询语言,在查询操作时和sql不同,查询字符串中的内容要使用类名和类的属性名来代替.这种查询方法相对简单,只要有SQL功底,使用hql是很简单的,但是有一些问题需要注意,就是查询获取数据不是目的,需要考虑的是如何编写出高效的查询语句,这才是讨论的重点. 1.N+1问题 (1)什么是N+1问题在刚听到这个名词时疑惑可能是有的,以前根本就没有听过N+1问题,那么它是指什么呢?N+1指的是一张表中有N条数据,那么在获取这N条数据时会产生N+

spring的hibernate查询日期的语句

问题描述 select to_date('2011-11-28','yyyy-mm-dd')-to_date('2011-11-01','yyyy-mm-dd') from dual这句sql语句是从oracle数据库中查询两个日期之间的天数,这句在oracle中运行正常,返回一个整数.可是放在dao持久层查询时不能运行.会说找不到dual,可是应该怎样写sql语句呢.public int findBeginEndNum(String begintime,String endtime) { tr

2. SQL Server数据库状态监控 - 错误日志

原文:2. SQL Server数据库状态监控 - 错误日志 无论是操作系统 (Unix 或者Windows),还是应用程序 (Web 服务,数据库系统等等) ,通常都有自身的日志机制,以便故障时追溯现场及原因.Windows Event Log和 SQL Server Error Log就是这样的日志, PS: SQL Server 中的错误日志 (Error Log) 类似于 Oracle中的alert 文件. 一. 错误日志简介 1. Windows事件日志与SQL Server 错误日志

3. SQL Server数据库状态监控 - 可用空间

原文:3. SQL Server数据库状态监控 - 可用空间 数据库用来存放数据,那么肯定需要存储空间,所以对磁盘空间的监视自然就很有必要了. 一. 磁盘可用空间 1. 操作系统命令或脚本.接口或工具 (1) DOS命令: fsutil volume diskfree C:\windows\system32>fsutil volume diskfree C: Total # of free bytes        : 9789493248 Total # of bytes           

5. SQL Server数据库性能监控 - 当前请求

原文:5. SQL Server数据库性能监控 - 当前请求 对于在线运行的系统,当前数据库性能监控,通常监视以下几点: (1) 是否有阻塞 (Blocking); (2) 是否有等待 (Waiting),阻塞就是锁 (Lock) 等待; (3) 是否运行时间过长(Long running): (4) 是否有死锁 (Deadlock): sys.dm_exec_query_stats之类,等一些统计性的信息,通常不作为实时告警内容,而是在性能优化时,作为参考.   一. 阻塞/等待/长时间运行

4. SQL Server数据库状态监控 - 作业状态

原文:4. SQL Server数据库状态监控 - 作业状态 有很多地方可以设置定时任务,比如:Windows的计划任务,Linux下的crontab,各种开发工具里的timer组件.SQL Server也有它的定时任务组件 SQL Server Agent,基于它可以方便的部署各种数据库相关的作业(job). 一. 作业历史纪录 作业的历史纪录按时间采用FIFO原则,当累积的作业历史纪录达到上限时,就会删除最老的纪录. 1. 作业历史纪录数配置 所有作业总计纪录条数默认为1000,最多为999

SQL Server2005中用语句创建数据库和表

在SQL Server2005中用语句创建数据库和表: 具体示例如下: use master go if exists (select * from sysdatabases where name='Study') --判断Study数据库是否存在,如果是就进行删除 drop database Study go EXEC sp_configure 'show advanced options', 1 GO -- 更新当前高级选项的配置信息 RECONFIGURE GO EXEC sp_confi