连接池的实现:
原理:在服务器启动的时候,创建一系列的连接对象(称为数据源);在程序中需要使用连接的时候,直接从数据源中获取一个已经存在的连接;(关闭连接,将当前连接重新放入到数据源中)。
连接池使用的几种核心技术:
1. 数据源(javax.sql.DataSource)(作用:用来存放连接)
2. JNDI(java目录命名对象)(作用:通过树形节点,来获取一个数据源)
使用连接池技术步骤:
1. 在Tomcat的conf目录中找到context.xml文件,配置连接池信息。
或者
将context.xml配置文件,存放在META-INF目录下。
2. 将sqljdbc.jar驱动,放在tomcat的lib目录中。
3. 在程序中使用JNDI技术,来查找当前配置的数据源。
4. 从数据源获取连接。
(注意:不能使用普通Java程序来测试连接即需要启动服务器)
连接的关闭并不是通常的关闭,而是把没有用的连接再吃放入连接池中
代码实例:
import java.sql.Connection;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
/**
*
* 高效率的获取连接
*
*
*/
public class DBUtil {
private static DataSource ds;
//静态语句块,最先执行,并且只会执行一次
static{
try {
//1. 创建JNDI的对象
Context cxt = new InitialContext();
//2. 获取数据源
ds = (DataSource)cxt.lookup("java:comp/env/jdbc/studentDB");//jdbc/studentDB 是content.xml 文件中配置值的属性值
java:comp/env 值不能变 是固定的
} catch (Exception e) {
e.printStackTrace();
}
}
/**
*
* 使用连接池来获取连接
*
* @return
*/
public static Connection getConn(){
try {
//3. 从数据源中获取连接
return ds.getConnection();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
content.xml 的配置
<!-- The contents of this file will be loaded for each web application -->
<Context>
<Resource name="jdbc/studentDB"
type="javax.sql.DataSource" 数据类型 maxActive="0" 最大连接数量 为0表示没有限制
maxIdle="30" 空闲连接的最小数目 maxWait="10000" 最长的等待时间,-1 表示永久等待 可用来设置系统开放的时间和长度
username="sa" password="123456" initialSize="50" 初始的连接数
driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver" 指定JDBC驱动程序类名
url="jdbc:sqlserver://localhost:1433;DatabaseName=studentDB" /> 指定连接数据库的URL
</Context>