/ / Налаштування весняного джерела даних для сплячого та @Transactional - java, hibernate, spring, транзакції, джерело даних

Налаштувати джерельний джерело даних для сплячого режиму та @ Transactional - java, hibernate, spring, transactions, data source

На даний момент я використовую DriverManagerDataSourceз анотацією @Transactional для управління транзакціями. Але всі транзакції відбуваються дуже повільно, ймовірно, через те, що джерело даних щоразу відкриває і тісно підключається до db.

Яке джерело даних я повинен використовувати для прискорення транзакцій?

Відповіді:

4 для відповіді № 1

DriverManagerDataSource насправді пул підключень і його слід використовувати лише для тестування. Спробуйте BasicDataSource від Apache Commons DBCP. Щось на зразок:

<bean id="dataSource" destroy-method="close"
class="org.apache.commons.dbcp.BasicDataSource">
<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>

8 для відповіді № 2

Я використовую у своїй програмі поєднання двохпідходи. Перший - це об'єднання з'єднань c3p0, його майже те саме рішення, що і chkal. Другий підхід полягає у використанні Spring lazyConnectionDataSourceProxy, який створює ледачий завантажувальний проксі, який завантажує з'єднання, лише якщо ви потрапили в базу даних. Це дуже корисно, коли у вас є кеш другого рівня, і ви лише читаєте кешовані дані та запити - база даних не буде потрапляти, і вам не потрібно набувати з'єднання (що досить дорого).

<bean name="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driverClassName}" />
<property name="jdbcUrl" value="${jdbc.url}" />
<property name="user" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<!-- Pool properties -->
<property name="minPoolSize" value="5" />
<property name="initialPoolSize" value="10" />
<property name="maxPoolSize" value="50" />
<property name="maxStatements" value="50" />
<property name="idleConnectionTestPeriod" value="120" />
<property name="maxIdleTime" value="1200" />

</bean>

<bean name="lazyConnectionDataSourceProxy" class="org.springframework.jdbc.datasource.LazyConnectionDataSourceProxy">
<property name="targetDataSource" ref="dataSource" />
</bean>