Использование P6Spy с источником данных в Spring applicationContext.xml
Я использую 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 ответа
Самый простой способ интегрировать p6spy с помощью Spring - это использовать класс 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>
Вам нужно создать бин фабрики сеансов в файле applicationContext.xml следующим образом:
<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>
Пожалуйста, обратитесь: http://www.mkyong.com/hibernate/how-to-display-hibernate-sql-parameter-values-solution/ для получения дополнительной информации о библиотеке P6Spy.
Мы можем опустить bean-компонент "dataSource" и напрямую писать свойства. Ссылка: как настроить файл конфигурации Hibernate для сервера SQL