数据源和连接池实现步骤

简介: 数据源和连接池实现步骤

数据源是用来连接数据库,获得Connection 对象的,在Java 中使用javax.sql.DataSource 接口来表示。有了数据源,我们就不需要再编写其他连接数据的代码,直接从数据源获得连接 就可以了。而且,不管使用什么样的数据库,都使用一样的方式获得数据库连接对象。那么数 据源的对象是如何获得的呢?一般是由容器来创建的,我们在程序中使用JNDI 来获取。通过数 据源创建的连接对象可以被自动放入连接池中统一管理。


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


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


在Tomcat 中配置数据源


(1)在Tomcat 中加入数据库驱动文件(OJDBC。jAR放在lab下)


(2)配置Tomcat 的conf/context.xml

<Context>
<Resource name="jdbc/books"
auth="Container" type="javax.sql.DataSource" maxActive="100"
maxIdle="30" maxWait="10000" username="pbdevj" password="pwd1234"
driverClassName="oracle.jdbc.OracleDriver "
url="jdbc:oracle:thin:@localhost:1521:orcl "/>
</Context>



备注:


name 指定Resource 的JNDI 名称auth指定管理Resource 的Manager(Container:由容器创建和管理|Application:由Web 应用创建和管理)type 指定Resource 所属的Java 类

maxActive 指定连接池中处于活动状态的数据库连接的最大数目maxIdle 指定连接池中处于空闲状态的数据库连接的最大数目maxWait指定连接池中的连接处于空闲的最长时间,超过这个时间会抛出异常,取值为-1,表示可以无限期等待


(3)使用JNDI 获取连接对象


import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
//…
Context ic = new InitialContext();
DataSource source = (DataSource)ic.lookup("java:comp/env/jdbc/books");
Connection connection = source.getConnection();


相关文章
|
2月前
|
SQL 监控 druid
springboot-druid数据源的配置方式及配置后台监控-自定义和导入stater(推荐-简单方便使用)两种方式配置druid数据源
这篇文章介绍了如何在Spring Boot项目中配置和监控Druid数据源,包括自定义配置和使用Spring Boot Starter两种方法。
|
6月前
|
druid Java 数据库连接
数据库连接池及Druid使用步骤
数据库连接池及Druid使用步骤
665 2
|
18天前
|
XML Java 数据库连接
如何使用HikariCP连接池来优化数据库连接管理
在Java应用中,高效管理数据库连接是提升性能的关键。本文介绍了如何使用HikariCP连接池来优化数据库连接管理。通过引入依赖、配置参数和获取连接,你可以显著提高系统的响应速度和吞吐量。 示例代码展示了从配置到使用的完整流程,帮助你轻松上手。
62 3
|
6月前
|
存储 Java 关系型数据库
springboot整合多数据源的配置以及动态切换数据源,注解切换数据源
springboot整合多数据源的配置以及动态切换数据源,注解切换数据源
626 0
|
druid 关系型数据库 MySQL
数据源管理(baomidou和druid)
数据源管理(baomidou和druid)
|
网络协议 测试技术 Apache
Tablestore-OTSClient连接池连接无法复用分析
某应用在压测过程中,发现OTSClient与OTS服务端之间的TCP连接有大量处于TIME_WAIT状态。
171 0
|
druid Java 数据库连接
使用Druid数据库连接池的配置和JDBC连接详情
使用Druid数据库连接池的配置和JDBC连接详情
329 0
|
Java 数据库连接 API
自定义数据库连接池
自定义数据库连接池
111 0
自定义数据库连接池
|
网络协议 Dubbo Oracle
数据库连接池设置多少连接才合适?
前段时间在一个老项目中经历过一个问题:一个 Dubbo 服务,启动的时候慢的要死,后来看日志查原因整个过程一直在初始化数据库连接。一看数据库连接参数,连接池大小:1024。 很多入行晚的同学没有经历过手写 JDBC 连接的日子。那个时候没有数据库连接池的概念,都是原生代码一顿搞,后来有了 iBATIS 之后 Java 开发的繁杂程度才逐渐减轻,也衍生 C3P0 数据库连接池这种基础的东西。
2791 0
数据库连接池设置多少连接才合适?
|
SQL XML 监控