Connection Pooling with Spring & Hibernate

后端 未结 5 1073
北海茫月
北海茫月 2021-02-09 00:14

How to configure connection pooling with Spring and Hibernate?

Thanks

Venu

相关标签:
5条回答
  • 2021-02-09 00:52

    You can use DBCP component

    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
            destroy-method="close">
    
            <property name="driverClassName" value="${jdbc.driverClassName}" />
            <property name="url" value="${jdbc.url}" />
            <property name="username" value="${jdbc.username}" />
            <property name="password" value="${jdbc.password}" />
            <property name="initialSize" value="10" />
            <property name="maxActive" value="5" />
            <property name="maxWait" value="5000" />
        </bean>
    
    
        <!-- Hibernate Configuration -->
        <bean id="sessionFactory"
            class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"
            p:dataSource-ref="dataSource">
            <property name="annotatedClasses">
                <list>
                    <value>com.project.domain.Domain1</value>
                    <value>com.project.domain.Domain1</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.generate_statistics">
                        ${hibernate.show_statistics}
                    </prop>
                </props>
            </property>
        </bean>
    
    0 讨论(0)
  • 2021-02-09 00:57
    <bean id="dataSource"
    class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="url" value="<put database connection url here>" />
    <property name="username" value="XXXXXX" />
    <property name="password" value="XXXXXXXX" />
    <property name="driverClassName" value="<database driver here>" />
    </bean>
    
    <bean id="pool" class="org.apache.commons.pool.impl.GenericObjectPool">
    <property name="minEvictableIdleTimeMillis"><value>300000</value></property>
    <property name="timeBetweenEvictionRunsMillis"><value>60000</value></property>
    </bean>
    
    <bean id="dsConnectionFactory" class="org.apache.commons.dbcp.DataSourceConnectionFactory">
    <constructor-arg><ref bean="dataSource"/></constructor-arg>
    </bean>
    
    <bean id="poolableConnectionFactory"   class="org.apache.commons.dbcp.PoolableConnectionFactory">
    <constructor-arg index="0"><ref bean="dsConnectionFactory"/></constructor-arg>
    <constructor-arg index="1"><ref bean="pool"/></constructor-arg>
    <constructor-arg index="2"><null/></constructor-arg>
    <constructor-arg index="3"><null/></constructor-arg>
    <constructor-arg index="4"><value>false</value></constructor-arg>
    <constructor-arg index="5"><value>true</value></constructor-arg>
    </bean>
    
    <bean id="pooledDS" class="org.apache.commons.dbcp.PoolingDataSource" depends-on="poolableConnectionFactory">
    <constructor-arg><ref bean="pool"/></constructor-arg>
    </bean>
    
    0 讨论(0)
  • 2021-02-09 01:01

    If you want to use Best among all Java Connection Pool providers try HikariCP. Configure a datasource bean using HikariCP in servlet-context as:

    <beans:bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource"  destroy-method="close">
                    <beans:property name="dataSourceClassName" value="com.mysql.jdbc.jdbc2.optional.MysqlDataSource"/>
                    <beans:property name="maximumPoolSize" value="5" />
                    <beans:property name="maxLifetime" value="30000" />
                    <beans:property name="idleTimeout" value="30000" />
                    <beans:property name="dataSourceProperties">
                              <beans:props>
                                  <beans:prop key="url">jdbc:mysql://localhost:3306/exampledb</beans:prop>
                                  <beans:prop key="user">root</beans:prop>
                                  <beans:prop key="password"></beans:prop>
                                   <beans:prop key="prepStmtCacheSize">250</beans:prop>
                                   <beans:prop key="prepStmtCacheSqlLimit">2048</beans:prop>
                                   <beans:prop key="cachePrepStmts">true</beans:prop>
                                   <beans:prop key="useServerPrepStmts">true</beans:prop>
                              </beans:props>
                    </beans:property>
    </beans:bean>
    

    Then use this datasource to create EntityManagerFactory bean.

    0 讨论(0)
  • 2021-02-09 01:05

    If you're running in a web application container, use the built-in connection pooling of your container.

    Otherwise, use Apache DBCP: http://commons.apache.org/dbcp/

    0 讨论(0)
  • 2021-02-09 01:08

    In Hibernate, you can configure CP30 Connection Pooling in Hibernate. View a tutorial here. IBM has a good tutorial on how to integrate Hibernate with Spring.

    0 讨论(0)
提交回复
热议问题