Свойство конфигурации TestConnectionOnCheckin c3p0 в Hibernate/Spring Framework

Я хотел бы установить свойство testConnectionOnCheckin для c3p0.

Однако у меня возникли проблемы с этим, потому что источник данных c3p0 создается от моего имени в bean-компоненте управления сущностями спящего режима.

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitManager" ref="persistenceUnitManager" />
<property name="persistenceProviderClass" value="org.hibernate.ejb.HibernatePersistence" />
<property name="jpaProperties">
  <props>
    <prop key="hibernate.dialect">${taxeng.entityManagerFactory.dialect}</prop>
    <prop key="hibernate.hbm2ddl.auto">${taxeng.entityManagerFactory.ddl}</prop>
    <prop key="hibernate.cache.provider_class">${taxeng.entityManagerFactory.cache}</prop>
    <!-- Note that we use this due to the "ClassNotFoundException: org.hibernate.hql.ast.HqlToken" issue -->
    <prop key="hibernate.query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslatorFactory</prop>

    <!-- Database connection pooling -->
    <prop key="hibernate.c3p0.min_size">${taxeng.hibernate.c3p0.min_size}</prop>
    <prop key="hibernate.c3p0.max_size">${taxeng.hibernate.c3p0.max_size}</prop>
    <prop key="hibernate.c3p0.timeout">${taxeng.hibernate.c3p0.timeout}</prop>
    <prop key="hibernate.c3p0.acquire_increment">${taxeng.hibernate.c3p0.acquire_increment}</prop>
    <prop key="hibernate.c3p0.idle_test_period">${taxeng.hibernate.c3p0.idle_test_period}</prop>
    <prop key="hibernate.c3p0.max_statements">${taxeng.hibernate.c3p0.max_statements}</prop>
    <prop key="hibernate.show_sql">false</prop>
  </props>
</property>

Где каждый из <prop key...1> является ключом конфигурации спящего режима, с помощью которого спящий режим создает источник данных c3p0 от моего имени.

Однако я не могу найти ключ конфигурации гибернации, который устанавливает свойство testConnectionsOnCheckin источника данных c3p0.

Есть ли такой ключ? Если нет, то должен ли я напрямую устанавливать источник данных entityManagers и есть ли какие-то хитрости, которые я должен знать, прежде чем делать это?

Примечание: testConnectionsOnCheckout не является жизнеспособным вариантом, у которого есть соответствующий ключ конфигурации гибернации.


person Randy    schedule 16.06.2010    source источник


Ответы (1)


Есть только подмножество свойств c3p0, которые можно переопределить следующим образом:

http://www.mchange.com/projects/c3p0/index.html#hibernate-specific

Для других (включая testConnectionsOnCheckin) необходимо переопределить в c3p0.properties

person Mark Pope    schedule 16.06.2010
comment
Последняя документация (ссылка выше) также позволяет добавлять к свойствам C3P0 префикс hibernate.c3p0.XXX. Таким образом, у вас будет: hibernate.c3p0.testConnectionsOnCheckout - person Flueras Bogdan; 03.10.2013
comment
Я не так читаю документацию. Все параметры можно указать в Hibernate. НЕКОТОРЫЕ из них переопределяют c3p0.properties, если они ТАКЖЕ определены в свойствах. - person JRun; 08.03.2014