我使用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>
任何帮助都非常值得赞赏。
由于
答案 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