定义
在内存中开辟一块空间,存放多个数据库连接对象
JDBCTomcatPool
直接由 tomcat 产生数据库连接池
具体如下:
在一块内存空间中,去存放多个连接对象,每个对象都有不同的状态。
active 状态:当前连接对象被应用程序使用中
Idle 空闲状态:等待应用程序使用
使用数据库连接池的目的
- 在高频率访问数据库时,使用数据库连接池可以降低服务器系统压力,提升程序运行效率
- 小型项目不适用数据库连接池
实现 JDBCtomcatPool 的步骤
- 在 web 项目的 META-INF 中存放 context.xml,在 context.xml 编写数据库连接池相关属性
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<Resource
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/sum"
username="root"
password="root"
maxActive="50"
maxIdle="20"
name="test"
auth="Container"
maxWait="10000"
type="javax.sql.DataSource"
/>
</Context>
因xml中在<>加注释不方便,所以我用HTML的注释形式重写了一边(不能运行)
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<!-- 生成资源对象 -->
<Resource
<!-- JDBC -->
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/sum"
username="root"
password="root"
<!--对象状态
max用来控制上限-->
maxActive="50"
maxIdle="20"
<!-- 起个名字调用 -->
name="test"
<!-- 由Tomcat管理-->
auth="Container"
<!-- 最大超时时间10s -->
maxWait="10000"
<!--通过name属性取的数据库连接池对象时,
在java中的类型,用javax.sql.DataSource
数据源相当于数据库连接池-->
type="javax.sql.DataSource"
/>
</Context>
- 把项目发布到 tomcat 中,数据库连接池就会产生
注:可以在 java 中使用 jndi 获取数据库连接池中对象
- Context是上下文接口,接口对象要获取context.xml 文件对象类型
- 代码为:
//Context接口是专门用来获取context.xml对象
//接口不能实例化,需要加入包——初始化
Context cxt = new InitialContext();
// java:comp/env是固定的(完整环境)
// 返回的是object对象,需要进行强转DataSource——获取数据库连接池对象
DataSource ds = (DataSource) cxt.lookup("java:comp/env/test");
//JDBC
Connection conn = ds.getConnection();
- 当关闭连接对象时,把连接对象归还给数据库连接池,把状态改变成 Idle