mybatis学习三 数据库连接池技术
1. 在内存中开辟一块空间, 存放多个数据库连接对象. 就是Connection 的多个实例
2. 连接池技术有很多,c3p0,dbcp,druid, 以及 JDBC Tomcat Pool,
JDBC Tomcat Pool 直接由 tomcat 产生数据库连接池.
3. 图示
3.1 active 状态: 当前连接对象被应用程序使用中
3.2 Idle 空闲状态: 等待应用程序使用
4. 使用数据库连接池的目的
4.1 在高频率访问数据库时, 使用数据库连接池可以降低服务器系
统压力, 提升程序运行效率.
4.1.1 小型项目不适用数据库连接池.
5. 实现 JDBC tomcat Pool 的步骤.
5.1 在 web 项目的 META-INF 中存放 context.xml, 在 context.xml 编写数据库连接池相关属性
<?xml version="1.0" encoding="UTF-8"?> <Context><span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">Resource </span><span style="color: rgba(255, 0, 0, 1)">driverClassName</span><span style="color: rgba(0, 0, 255, 1)">="com.mysql.jdbc.Driver"</span><span style="color: rgba(255, 0, 0, 1)"> url</span><span style="color: rgba(0, 0, 255, 1)">="jdbc:mysql://192.168.153.128:3306/mybaties?characterEncoding=utf-8"</span><span style="color: rgba(255, 0, 0, 1)"> username</span><span style="color: rgba(0, 0, 255, 1)">="root"</span><span style="color: rgba(255, 0, 0, 1)"> password</span><span style="color: rgba(0, 0, 255, 1)">="123456"</span><span style="color: rgba(255, 0, 0, 1)"> maxActive</span><span style="color: rgba(0, 0, 255, 1)">="50"</span><span style="color: rgba(255, 0, 0, 1)"> maxIdl</span><span style="color: rgba(0, 0, 255, 1)">="20"</span><span style="color: rgba(255, 0, 0, 1)"> name</span><span style="color: rgba(0, 0, 255, 1)">="test"</span><span style="color: rgba(255, 0, 0, 1)"> auth</span><span style="color: rgba(0, 0, 255, 1)">="Container"</span><span style="color: rgba(255, 0, 0, 1)"> maxWait</span><span style="color: rgba(0, 0, 255, 1)">="10000"</span><span style="color: rgba(255, 0, 0, 1)"> type</span><span style="color: rgba(0, 0, 255, 1)">="javax.sql.DataSource"</span> <span style="color: rgba(0, 0, 255, 1)">/></span>
</Context>
maxActive="50" 连接池中最多有 50 个处于活动状态的 Connection 对象,也就是最大并发量 maxIdl="20" 连接池中最多有 20 个 Connection 处于空闲状态
name="test" 当前连接池的名称是 test auth="Container" 当前连接池归 Tomcat 容器管理,也可以设置成应用程序管理 maxWait="10000" 一个链接请求最长的等待毫秒数,如果超过时间还没有请求到 Connection 对象,就报错 type="javax.sql.DataSource" 连接池在 java 中对应的对象
5.2 把项目发布到 tomcat 中, 数据库连接池产生了
6. 可以在 java 中使用 jndi 获取数据库连接池中对象
6.1 Context: 上下文接口.context.xml 文件对象类型
6.2 代码: 注意 下面的代码是写在 Servlet 中,并不是普通 java 类中
Context cxt = new InitialContext(); DataSource ds = (DataSource) cxt.lookup("java:comp/env/test");// 前面的固定,text 是 context.xml 配置的 name 属性的值
Connection conn = ds.getConnection();