1. 程式人生 > >連線池之Spring管理資料庫連線

連線池之Spring管理資料庫連線

一、資料庫連線的管理模式

    1.每次請求建立新的連線

 Connection=DriverManager.getConnection("jdbc:oracle:thin:@10.1.53.30:1521:project","project","project");

    2.連線池管理模式:

預先建立多個與資料庫的連線,每個從池中取一個空閒的連線,使用後再放回池中。

二、連線池概念

連線池是建立和管理一個連線的緩衝池的技術,這些連線準備好被任何需要它們的執行緒使用。

三、連線池實現技術

    1.JavaEE Server管理的連線池:每個符合JavaEE規範的伺服器都提供了連線池的管理機制。

    2.各種連線池的管理框架

------ Apache DBCP。

------ C3P0框架(聽說是目前連線最快的框架)。

------ Spring自己管理的連線池。

------ 其他的。

四、各個框架實現程式碼

    1.dao層程式碼

首先先寫dao層程式碼,比較容易,使用@Autowired自動注入。

    private DataSource dataSource=null;

    @Autowired
    public void setDataSource(DataSource dataSource) {
        this.dataSource = dataSource;
    }

連線時只需呼叫Connection conn = dataSource.getConnection();即可

   2.context.xml下的程式碼

Spring到命名服務中查詢已經註冊的連線池物件。

舊版本模式

<bean id="dataSourceForNeusoftOA" class="org.springframework.jndi.JndiObjectFactoryBean">

           <property name="jndiName" value="java:comp/env/neusoftoa"></property>

 </bean>

新版的Spring,在jee空間提供了從命名服務查詢物件的方法

<beans>

           <jee:jndi-lookup id="myDataSource" jndi-name="java:comp/env/jdbc/myds"/>

</beans>

Spring自身提供的連線池框架

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">

           <property name="driverClassName" value="${jdbc.driverClassName}"/>

           <property name="url" value="${jdbc.url}"/>

           <property name="username" value="${jdbc.username}"/>

           <property name="password" value="${jdbc.password}"/>

</bean>

使用DBCP框架

<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">

                   <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>

                   <property name="url" value="${jdbc.url}"/>

                   <property name="username" value="${jdbc.username}"/>

                   <property name="password" value="${jdbc.password}"/>

</bean>

使用DBCP框架需要匯入DBCP相關的類庫,在Pom.xml檔案下新增以下內容即可:

 <!-- 連線池-使用DBCP框架方式依賴注入 DataSource -->
            <dependency>
                    <groupId>org.apache.commons</groupId>
                     <artifactId>commons-dbcp2</artifactId>
                     <version>2.5.0</version>
            </dependency>

使用C3P0

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">

           <property name="driverClass" value="${jdbc.driverClassName}"/>

           <property name="jdbcUrl" value="${jdbc.url}"/>

           <property name="user" value="${jdbc.username}"/>

           <property name="password" value="${jdbc.password}"/>

</bean>

使用C3P0框架需要匯入C3P0相關的類庫,在Pom.xml檔案下新增以下內容即可:

<!-- 連線池-使用C3P0框架依賴注入DataSource -->
           <!-- https://mvnrepository.com/artifact/com.mchange/c3p0 -->
           <dependency>
                       <groupId>com.mchange</groupId>
                       <artifactId>c3p0</artifactId>
                       <version>0.9.5.1</version>
           </dependency>