2012-07-16 73 views
5

我正在使用spring和hibernate獨立應用程序。我正在使用下面的配置。春季DriverManagerDataSource打開了很多連接?

<bean id="dataSource" 
     class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
     <property name="driverClassName" value="${driverClassName}" /> 
     <property name="url" value="${db.url}" /> 
     <property name="username" value="${db.username}" /> 
     <property name="password" value="${db.password}" /> 
    </bean> 

    <bean id="sessionFactory" 
     class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> 
     <property name="dataSource" ref="dataSource" /> 
     <property name="annotatedClasses"> 
      <list> 
       <value>com.some.SomePojo</value> 
      </list> 
     </property> 

     <property name="hibernateProperties"> 
      <props> 
       <prop key="hibernate.dialect">${mdm.db.dialect}</prop> 

      </props> 
     </property> 
    </bean> 


    <tx:annotation-driven transaction-manager="transactionManager" /> 

    <bean id="transactionManager" 
     class="org.springframework.orm.hibernate3.HibernateTransactionManager"> 
     <property name="sessionFactory" ref="sessionFactory" /> 
    </bean> 

是DriverManagerDataSource在每次請求數據時都打開數據庫連接?還是重用已經打開的連接?它也關閉空閒連接?要利用連接池概念,我需要c3p0嗎?

謝謝!

+0

http://stackoverflow.com/questions/4961173/how-to-reuse-the-same-connection-with-a-springs-jdbctemplate – coderz 2015-12-08 01:40:21

回答

5

java doc狀態;

該類不是實際的連接池;它實際上不會連接連接。

詳情參見

http://static.springsource.org/spring/docs/2.0.x/api/org/springframework/jdbc/datasource/DriverManagerDataSource.html

+0

感謝您的回覆。我可以在獨立應用程序中使用c3p0嗎?或者它應該用於Web應用程序? bcaz我的appln沒有部署在任何應用程序服務器上。謝謝! – user1016403 2012-07-16 08:50:45

+0

您有3個選項; 1使用基於容器的連接池JNDI,2使用c3po或3 DBCP。我會選擇1,它會讓您的彈簧配置更加簡單 – 2012-07-16 08:54:27