Spring конфигурация C3P0 с Hibernate?

У меня есть приложение Spring/JPA с Hibernate как поставщик JPA. Я сконфигурировал источник данных C3P0 в Spring через:

<bean id="myJdbcDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
      destroy-method="close">
  <!-- Connection properties -->
  <property name="driverClass" value="$DS{database.class}" />
  <property name="jdbcUrl" value="$DS{database.url}" />
  <property name="user" value="$DS{database.username}" />
  <property name="password" value="$DS{database.password}" />
  <!-- Pool properties -->
  <property name="minPoolSize" value="5" />
  <property name="maxPoolSize" value="20" />
  <property name="maxStatements" value="50" />
  <property name="idleConnectionTestPeriod" value="3000" />
  <property name="loginTimeout" value="300" />

Затем я указал этот источник данных в диспетчере сущностей Spring factory следующим образом:

<bean id="myLocalEmf"
    class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
      <property name="persistenceUnitName" value="myapp-core" />
      <property name="dataSource" ref="myJdbcDataSource" />
 </bean>

Тем не менее, я недавно заметил при просмотре артефактов maven "hibernate-c3p0". Что это? Это что-то мне нужно использовать? Или я уже правильно настроил это?

Ответ 1

Hibernate-c3p0.jar предоставляет класс org.hibernate.connection.C3P0ConnectionProvider, реализацию контракта Hibernate ConnectionProvider на основе C3P0. Этот артефакт вам нужен, если вы хотите использовать C3P0 как автономный пул соединений Hibernate (который вы настраиваете через файл hibernate.cfg.xml). Поскольку вы используете Spring, вам это не нужно.

Ответ 2

org.hibernate: hibernate-c3p0 выглядит как модуль, который вы использовали бы, если бы вы настраивали Hibernate для непосредственного использования C3P0.

Вам не нужно, чтобы он предполагал, что конфигурация, которую вы опубликовали, работает для вас - не так ли?