????我們可能已經很熟悉在未使用數據庫連接池的hibernate的環境下,配置p6spy和sql profiler.這在單獨使用hibernate,以及項目初期是有效的.但是,在真實的開發環境下,往往是項目進行到中后期時,才考慮到優化系統的性能,才考慮優化sql和數據庫設計,而且在很多的項目中都會采用數據庫連接池.為了減少配置文件在jdbc和datasource之間的配置切換,能不能考慮在使用數據庫連接池的hibernate環境下配置p6spy和sqlfiler呢?
????下面就以spring,hibernate環境為例來說明在使用數據庫連接池情況下配置p6spy和sql profiler:
????1.下載p6spy和sqlprofiler
?????????http://www.p6spy.com
?????????http://www.jahia.org
???2.把解壓后得到的p6spy.jar加入項目文件的CLASSPATH.
???
????3.把解壓sql profiler后得到的spy.properties放入運行環境的根目錄(Eclipse中,將其置于src目錄節點之下),修改spy.properties如下:
??????????????????????????????# the mysql open source driver
??????????????????????????????realdriver=net.sourceforge.jtds.jdbc.Driver??????? //這里填寫你用的實際數據庫驅動
???
?????4.配置spring文件
?????????<bean id="dataSource"
??????????????class="org.apache.commons.dbcp.BasicDataSource"
??????????????destroy-method="close">
????????????????????<property name="driverClassName" value="${jdbc.driverClassName}" />
????????????????????<property name="url" value="${jdbc.url}" />
????????????????????<property name="username" value="${jdbc.username}" />
??????????????????????<property name="password" value="${jdbc.password}" />
?????????</bean>
??????????<bean id="myDataSource" class="com.p6spy.engine.spy.P6DataSource"
????????????????????????????????????????????????? destroy-method="close">
??????????????????<constructor-arg>
?????????????????????????<ref local="dataSource"/>
????????????????????</constructor-arg>
???????????</bean>
??????????<!--Hibernate SessionFatory-->
??????????<bean id="sessionFactory"
?????????????????class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
?????????????????<property name="dataSource" ref="myDataSource" />
?????????????????<property name="mappingDirectoryLocations">
??????????????????<list>
??????????????????????<value>
??????????????????????????classpath:/com/got/caip/domain/
??????????????????????</value>
??????????????????</list>
?????????????????</property>
?????????????????<property name="hibernateProperties">
?????????????????????<props>
?????????????????????????<prop key="hibernate.dialect">
?????????????????????????????org.hibernate.dialect.SQLServerDialect
?????????????????????????</prop>
?????????????????????????<prop key="hibernate.show_sql">
????????????????????????????????${hibernate.show_sql}
?????????????????????????</prop>
?????????????????????????<prop key="hibernate.cache.use_query_cache">
????????????????????????????????${hibernate.cache.use_query_cache}
??????????????????????????</prop>
???????????????????<prop key="hibernate.cache.provider_class">
??????????????????????????${hibernate.cache.provider_class}
???????????????????</prop>
???????????????????<prop key="hibernate.jdbc.batch_size">
???????????????????????20
??????????????????</prop>
???????????????????<prop key="net.sf.ehcache.configurationResourceName">
??????????????????????????/ehcache.xml
???????????????????</prop>
??????????????????</props>
???????????????????</property>
?????????????</bean>
??????5.通過java -jar sqlprofiler啟動sql profiler