где должны быть указаны свойства c3p0?

Я использую интегрированное приложение Spring/Hibernate. Я настроил пул соединений c3p0. Я использую комбинированный источник данных c3p0. Где я должен указать свойства объединенного источника данных?

В этой секции?

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="mappingLocations" value="classpath:hibernate-mapping.xml" />
        <property name="hibernateProperties">
            <props>
                **//Here do I need to specify combopooled datasource properties?
        //like acquireIncrement
            acquireRetryAttempts
            acquireRetryDelay
            preferredTestQuery
            maxPoolSize...etc**
            </props>
        </property>
        <property name="dataSource" ref="dataSource" />
    </bean>

Или здесь?

<bean id="rootDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="${jdbc.driver}" />
        <property name="jdbcUrl" value="${jdbc.url}" />
        <property name="user" value="${jdbc.username}" />
        <property name="password" value="${jdbc.password}" />
**//Here do i need to specify combopooled datasource properties?
            //like acquireIncrement
            acquireRetryAttempts
            acquireRetryDelay
            preferredTestQuery**
            maxPoolSize...etc

</bean>

Пожалуйста, предложите мне.

Спасибо!


person user1016403    schedule 11.05.2012    source источник


Ответы (2)


Вы можете указать их в файле c3p0.properties. Просто поместите его в корень пути к классам.

или в файле xml с именем c3p0-config.xml также в корне вашего пути к классам

или, если вы хотите, чтобы он был в вашем spring xml для Hibernate, вы можете использовать

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
      <!--<property name="lobHandler">
         <ref local="lobHandler" />
      </property>-->
      <property name="hibernateProperties">
         <props>
            <prop key="hibernate.connection.driver_class">${jdbc.drivers}</prop>
            <prop key="hibernate.connection.url">${jdbc.url}</prop>
            <prop key="hibernate.connection.username">${jdbc.username}</prop>
            <prop key="hibernate.connection.password">${jdbc.password}</prop>
            <prop key="hibernate.c3p0.min_size">5</prop>
            <prop key="hibernate.c3p0.max_size">100</prop>
            <prop key="hibernate.c3p0.timeout">1800</prop>
            <prop key="hibernate.c3p0.max_statements">50</prop>
            <prop key="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</prop>
            <prop key="hibernate.cglib.use_reflection_optimizer">true</prop>
            <prop key="hibernate.show_sql">true</prop>
            <prop key="hibernate.format_sql">true</prop>
         </props>
      </property>

Я считаю, что настройки Hibernate переопределяют использование файла c3po.properties, если оба существуют. однако это post предлагает некоторые несоответствия с документами c3po

person Brad    schedule 11.05.2012
comment
Спасибо за ответ. еще раз, в каком разделе мне нужно получить доступ к значениям свойств из файла свойств? Спасибо! - person user1016403; 11.05.2012
comment
Если вы создаете файл свойств, классы c3po знают, что нужно искать его в корне вашего пути к классам с точным именем файла, поэтому вам не нужно его указывать. Это должно просто работать. - person Brad; 11.05.2012

Они должны перейти к bean-компоненту источника данных (rootDataSource). После передачи источника данных в LocalSessionFactoryBean спящий режим не будет создавать пул соединений, поэтому свойства, указанные в hibernateProperties, будут игнорироваться.

Все свойства, которые вы хотите установить, доступны как методы установки на ComboPooledDataSource. Добавьте больше тегов свойств в ваш компонент источника данных и укажите значение для них.

<bean id="rootDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="${jdbc.driver}" />
        <property name="jdbcUrl" value="${jdbc.url}" />
        <property name="user" value="${jdbc.username}" />
        <property name="password" value="${jdbc.password}" />
        <property name="password" value="${jdbc.password}" />
        <property name="acquireRetryAttempts" value="..." />
        <property name="acquireRetryDelay" value="..." />
        <property name="preferredTestQuery" value="..." />
        <property name="maxPoolSize" value="..." />    
    </bean>
person gkamal    schedule 11.05.2012