连接池、数据源、JNDI三者间的关系及用法

 

连接池:
连接池是由容器(比如Tomcat)提供的,用来管理池中的连接对象。
连接池自动分配连接对象并对闲置的连接进行回收。
连接池中的连接对象是由数据源(DataSource)创建的。
连接池(Connection Pool)用来管理连接(Connection)对象。

 

数据源:
数据源(DataSource)用来连接数据库,创建连接(Connection)对象。
 java.sql.DataSource接口负责建立与数据库的连接
 由Tomcat提供,将连接保存在连接池中。

当与spring集成时,可以用spring-jdbc

 


JNDI(Java Naming and Directory Interface,Java命名和目录接口):
在程序中使用JNDI获取数据源。


通过数据源创建的连接对象被统一的放入到连接池中进行管理。


搞清楚三者的关系,然后进行下面的配置 : )

 

Java中的数据源就是javax.sql.DataSource。DataSource的创建可以有不同的实现。DataSource 通常被称为数据源,它包含连接池和连接池管理两个部分,习惯上也经常把 DataSource 称为连接池。

 

  JNDI方式创建DataSource:  (Java Naming and Directory Interface,Java命名和目录接口)。首先要配置数据源的相关连接信息,也就是数据源连接池。该配置应该在Tomcat安装目录下的conf/context.xml文件中配置。

  

 

连接池基本的思想,原理:

  在系统初始化的时候,将数据库连接作为对象存储在内存中,当用户需要访问数据库时,并非建立一个新的连接,而是从连接池中取出一个已建立的空闲连接对象。

数据库连接池负责分配,管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是重新建立一个。

连接池通俗理解:  

  数据库连接池就是准备一个池子,里面放着很多生成好的Connection,用户请求获得连接,就不需要getConnection,只要从池子里拿一个给他就行了,这样省掉了生成Connection的时间,效率上会有很大提高,不过当然会占用一些内存~稍微大点网站都会用到数据库连接池的~

 

数据库连接池技术的优点: 

资源重用

更快的系统反应速度

新的资源分配手段

统一的连接管理,避免数据库连接泄露

 

开源的数据库连接池 C3P0 DBCP Proxool XAPool 等

  以C3p0获得数据源为例:

@Test
public void testC3P0() throws Exception{

       ComboPooledDataSource cpds = new ComboPooledDataSource();

       cpds.setDriverClass( "com.mysql.jdbc.Driver" ); //loads the jdbc driver           

       cpds.setJdbcUrl( "jdbc:mysql:///atguigu" );

       cpds.setUser("root");                                 

       cpds.setPassword("1230");  

        

       System.out.println(cpds.getConnection());

   }

 

详情:https://www.cnblogs.com/fifiyong/p/6026230.html

 

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值