0

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>

私に提案してください。

ありがとう!

4

2 に答える 2

1

ファイルで指定できc3p0.propertiesます。クラスパスのルートに配置するだけです

c3p0-config.xmlまたは、クラスパスのルートでも名前が付けられたxmlファイルで

または、Hibernate の spring xml でそれが必要な場合は、使用できます

<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 ファイルの使用をオーバーライドすると思います。ただし、この投稿は c3po ドキュメントとの矛盾を示唆しています

于 2012-05-11T15:15:09.867 に答える
0

これらは、データ ソース Bean (rootDataSource) に進む必要があります。データ ソースを LocalSessionFactoryBean に渡すと、hibernate は接続プールを作成しません。そのため、hibernateProperties で指定されたプロパティは無視されます。

設定するすべてのプロパティは、ComboPooledDataSourceのセッター メソッドとして利用できます。さらにプロパティ タグをデータ ソース 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}" />
        <property name="password" value="${jdbc.password}" />
        <property name="acquireRetryAttempts" value="..." />
        <property name="acquireRetryDelay" value="..." />
        <property name="preferredTestQuery" value="..." />
        <property name="maxPoolSize" value="..." />    
    </bean>
于 2012-05-11T15:25:49.033 に答える