1.什么是数据库连接池?
数据库连接池,简称dbcp database connection pool
数据库连接是一种有限的昂贵的资源,数据库连接影响到程序的性能指标。数据库连接池正是针对这个问题提出来的。数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而再不是重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能。
2.使用数据库连接池的好处
1. 资源重用
由于数据库连接得到重用,避免了频繁创建、释放连接引起的大量性能开销。在减少系统消耗的基础上,另一方面也增进了系统运行环境的平稳性。
2. 更快的系统响应速度
数据库连接池在初始化过程中,往往已经创建了若干数据库连接置于池中备用。此时连接的初始化工作均已完成。对于业务请求处理而言,直接利用现有可用连接,避免了数据库连接初始化和释放过程的时间开销,从而缩减了系统整体响应时间。
3. 新的资源分配手段
对于多应用共享同一数据库的系统而言,可在应用层通过数据库连接的配置,实现数据库连接池技术,几年钱也许还是个新鲜话题,对于目前的业务系统而言,如果设计中还没有考虑到连接池的应用,那么…….快在设计文档中加上这部分的内容吧。某一应用最大可用数据库连接数的限制,避免某一应用独占所有数据库资源。
3.数据库连接池的实现步骤?
1.复制相应的数据库jar到Tomcat/lib中
2.找到Tomcat官网-----》点击Documentation----》点击JNDI Resources------》找到UserDatabase Resources的说明
添加以下配置信息到conf/context.xml
<Resource name="jdbc/news" auth="Container"
type="javax.sql.DataSource" maxActive="100"
maxIdle="30" maxWait="10000" username="scott" password="tiger"
driverClassName="Oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@localhost:1521:orcl"
/>
<Resource name="jdbc/TestDB"
auth="Container"
type="javax.sql.DataSource"
username="root"
password="password"
driverClassName="com.MySQL.jdbc.Driver"
url="jdbc:mysql://localhost:3306/test?autoReconnect=true"
maxTotal="8"
maxIdle="4"/>
3.配置web.xml
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/TestDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
4.测试(运用JSP页面进行测试)
//1.初始化数据库连接池(大池子)
Context context=new InitialContext();
//2.获取Java环境池(小池子)
Context envContext=(Context)context.lookup("java:/comp/env");
//3.获取数据源对象
DataSource dataSource=(DataSource)envContext.lookup("jdbc/TestDB");
//4.获取数据库连接对象
Connection conn=dataSource.getConnection();
out.print(conn);