一、数据库连接的管理模式
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>