c3p0在spring下的配置过程
前几天在配置hibernate的c3p0连接池时报出了死锁的异常。经过一顿的学习,现在项目中已经解决了这个问题,现将其配置记录于下,供自己和有需要的人查阅。
1、在hibernate.properties中添加:
hibernate.connection.provider_class =org.hibernate.connection.C3P0ConnectionProvider
######C3P0 MySQL config #######c3p0.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&mysqlEncoding=utf8 c3p0.user=rootc3p0.password=rootc3p0.driverClass=com.mysql.jdbc.Driverc3p0.acquireIncrement=1c3p0.maxIdleTime=60c3p0.maxPoolSize=200c3p0.minPoolSize=50c3p0.initialPoolSize=300
<bean id="dataSource"value="${c3p0.driverClass}"></property><property name="jdbcUrl" value="${c3p0.url}"></property><property name="user" value="${c3p0.user}"></property><property name="password" value="${c3p0.password}"></property><property name="acquireIncrement" value="${c3p0.acquireIncrement}"></property><property name="initialPoolSize" value="${c3p0.initialPoolSize}"></property><property name="maxIdleTime" value="${c3p0.maxIdleTime}"></property><property name="maxPoolSize" value="${c3p0.maxPoolSize}"></property><property name="minPoolSize" value="${c3p0.minPoolSize}"></property><property name="acquireRetryDelay" value="1000"></property><property name="acquireRetryAttempts" value="60"></property><property name="breakAfterAcquireFailure" value="false"></property></bean><!--Hibernate SessionFatory--><bean id="sessionFactory"ref="dataSource" /><property name="lobHandler" ref="lobHandler" /><property name="configLocations"><list><value>classpath*:/hibernate/hibernate.cfg.xml</value></list></property><property name="configurationClass"value="org.hibernate.cfg.AnnotationConfiguration" /><!-- 如果采用hbm 方式<property name="mappingDirectoryLocations"><list><value>classpath*:/org/ustb/mis/model/hbm/</value></list></property>--><property name="hibernateProperties"><props><prop key="hibernate.dialect">${hibernate.dialect}</prop><prop key="hibernate.show_sql">${hibernate.show_sql}</prop><prop key="hibernate.cache.use_query_cache">${hibernate.cache.use_query_cache}</prop><prop key="hibernate.cache.provider_class">${hibernate.cache.provider_class}</prop><!-- 配置C3P0ConnectionProvider--><prop key="hibernate.connection.provider_class">${hibernate.connection.provider_class}</prop><prop key="hibernate.current_session_context_class">${hibernate.current_session_context_class}</prop></props></property></bean>
<!-- 属性文件读入 --><bean id="propertyConfigurer"class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"><property name="locations"><list><value>classpath*:hibernate/jdbc.properties</value><value>classpath*:hibernate/hibernate.properties</value></list></property></bean>