视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
数据源和连接池
2020-11-09 14:53:19 责编:小采
文档


数据源是用来连接数据库,获得Connection对象的,在java中使用javax.sql.DataSource接口来表示。 有了数据源,我们就不需要在编写其他连接数据库代码,直接从数据源中获取连接就可以了,而且,不管使用什么样的数据库,都是用一样的方式获取数据库连接对象。

数据源是用来连接数据库,获得Connection对象的,在java中使用javax.sql.DataSource接口来表示。

有了数据源,我们就不需要在编写其他连接数据库代码,直接从数据源中获取连接就可以了,而且,不管使用什么样的数据库,都是用一样的方式获取数据库连接对象。

数据源对象一般由容器创建的,在程序中可以使用JNDI来获取。通过数据源创建的连接对象可以被自动的放入连接池统一管理。

连接池是用来管理Connection对象的,连接池可以从数据源中获取连接,连接池中可以有若干个数据库连接对象,这些连接对象可以被重用。应用程序需要连接时就向连接池申请,如果连接池有空闲的连接,就会分配给应用程序,如果没有,可能需要在等待队列里等待。而如果从连接池中获得一个连接对象,等到使用完毕后,通过调用Connection的close()方法,就能将连接还给连接池,这样这个连接对象就又编程空闲的了,可以等待下一次连接请求。而连接池中的连接对象将一直保持与数据库的连接,这样就避免了频繁的连接盒关闭。但是这些连接对象会占用一定的内存空间,所以我们要根据数据库的并发访问量,和服务器的硬件条件来觉得连接池中的最大连接数。

数据源和连接池一个是用来创建连接对象的,一个是用来管理连接对象的。

在Tomcat中使用数据源可以使用如下步骤:

1、在Tomcat中加入数据库驱动文件,在Tomcat的lib目录下导入数据库驱动包。

2、配置Tomcat的conf/context.xml文件,在该文件中加入如下代码:


	

name:指定Resource的JNDI名称。auth:指定管理Resource的Manager(Container:由容器创建和管理,Application:由WEB应用创建和管理)。type:指定Resource所属的java类。maxActive指定连接池中处于活动状态的数据库连接的最大数目。maxIdle:指定连接池中处于空闲状态的数据库连接的最大数目。maxWait:指定连接池中处于空闲的最长时间,超过这个时间会抛出异常,取值为-1表示无限期等待。

3、使用JNDI获取连接对象。

import java.sql.Connection;
import java.sql.SQLException;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

public class JNDIConnection {
	public Connection JNDIgetConnection() {
	Connection conn = null;
	Context ic;
	try {
	ic = new InitialContext();
	DataSource ds = (DataSource) ic.lookup("java:comp/env/jdbc/books");
	conn = ds.getConnection();
	} catch (NamingException e) {
	e.printStackTrace();
	} catch (SQLException e) {
	e.printStackTrace();
	}
	return conn;
	}
}

这时我们就可以使用连接对象,并且对数据库进行一系列操作。

下载本文
显示全文
专题