在Spring applicationContext.xml中使用P6Spy和数据源

时间:2013-02-05 11:06:02

标签: java spring hibernate logging p6spy

我使用Hibernate 4,Spring 3,JSF 2.0和Weblogic 10.3.6作为服务器。

我在Weblogic服务器和applicationContext.xml中创建了数据源我已将数据源定义为

<!-- Data Source Declaration -->    
    <bean id="DataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiName" value="jdbc/​myDS"/>   
</bean>

如果我想使用P6Spy记录SQL参数,我应该如何以及在何处在applicationcontext.xml中添加以下内容?

  <property name="hibernate.connection.driver_class">com.p6spy.engine.spy.
  P6SpyDriver</property>

任何帮助都非常值得赞赏。

由于

2 个答案:

答案 0 :(得分:6)

使用spring集成p6spy的最简单方法是使用P6DataSource类。 P6DataSource类只是真实数据源的代理。这使您可以使用任何Spring数据源工厂实现获取实际数据源。

<bean id="dataSource" class="com.p6spy.engine.spy.P6DataSource">
  <constructor-arg>
    <bean id="DataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
      <property name="jndiName" value="jdbc/​myDS"/>   
    </bean>
  </constructor-arg>
</bean>

如果您使用的是XADatasource,只需将类名更改为P6ConnectionPoolDataSource,如下所示。注意:P6ConnectionPoolDataSource实现ConnectionPoolDataSource和XADataSource接口。

<bean id="dataSource" class="com.p6spy.engine.spy.P6ConnectionPoolDataSource">
  <constructor-arg>
    <bean id="DataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
      <property name="jndiName" value="jdbc/​myDS"/>   
    </bean>
  </constructor-arg>
</bean>

答案 1 :(得分:1)

您需要在applicationContext.xml文件中创建会话工厂的bean,如下所示:

<bean id="sessionFactory"
    class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
        <property name="dataSource">
            <ref bean="dataSource" />
        </property>
    </bean>
    <bean id="dataSource"
        class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.p6spy.engine.spy.
  P6SpyDriver" />
        <property name="url" value="jdbc\:mysql\://localhost\:3306/testdb" />
        <property name="username" value="my_username" />
        <property name="password" value="my_password" />
    </bean>

有关P6Spy库的更多信息,请参阅:http://www.mkyong.com/hibernate/how-to-display-hibernate-sql-parameter-values-solution/

我们可以省略“dataSource”bean并直接写入属性。参考:how to configure hibernate config file for sql server