连接池之Spring管理数据库连接

一、数据库连接的管理模式

    1.每次请求创建新的连接

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

    2.连接池管理模式:

预先创建多个与数据库的连接,每个从池中取一个空闲的连接,使用后再放回池中。

二、连接池概念

连接池是创建和管理一个连接的缓冲池的技术,这些连接准备好被任何需要它们的线程使用。

三、连接池实现技术

    1.JavaEE Server管理的连接池:每个符合JavaEE规范的服务器都提供了连接池的管理机制。

Tomcat下关于数据库连接池配置与使用请查看连接:https://blog.csdn.net/Kedongyu_/article/details/81352170

    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>

猜你喜欢

转载自blog.csdn.net/Kedongyu_/article/details/81366701