Это имеет огромное значение, если вы находитесь в контейнере JavaEE.
Больше, чем личные предпочтения, вам гораздо лучше, если вы будете следовать второму подходу с несколькими изменениями.
В первом случае вы создаете собственный пул соединений и не получаете прибыль от существующего пула соединений в контейнере.Таким образом, даже если вы сконфигурировали свой контейнер, скажем, максимум для 20 одновременных подключений к базе данных, вы не можете гарантировать этот максимум, поскольку этот новый пул соединений не ограничен вашей конфигурацией.Кроме того, вы не получаете прибыль ни от каких инструментов мониторинга, которые ваш контейнер предоставляет вам .
Во втором случае вы также создаете свой собственный пул соединений сте же недостатки, что и выше.Однако вы можете изолировать определение этого пружинного компонента и использовать его только в тестовых прогонах.
Лучше всего посмотреть пул соединений контейнера через JNDI .Тогда вы обязательно соблюдаете настройки источника данных из контейнера.
Используйте это для запуска тестов.
<!-- datasource-test.xml -->
<bean id="domainDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="${db.driver}" />
<property name="jdbcUrl" value="${datasource.url}" />
<property name="user" value="${datasource.username}" />
<property name="password" value="${datasource.password}" />
<property name="initialPoolSize" value="5"/>
<property name="minPoolSize" value="5"/>
.....
</bean>
Используйте это при развертывании в контейнер JavaEE
<!-- datasource.xml -->
<jee:jndi-lookup id="domainDataSource" jndi-lookup="jndi/MyDataSource" />
- Не забудьте установить схему JEE
- Хотя Tomcat не является полным контейнером JavaEE, он управляет источниками данных через JNDI, поэтому этот ответ по-прежнему применяется.