mysql odbc连接池_数据源与连接池的关系

今日一直在纠结数据源与连接池,这两个东西到底是什么关系呢?因为看spring中配置的明明是连接池,但是术语却叫其 数据源,而且也没有看到其配置数据源,想想肯定是有原因的,遂来总结下。

先抛开spring的配置,先来谈谈市场上常用的数据源和连接池:

数据源:JDBC数据源,JNDI数据源,ODBC数据源等(黑体比较常用);

连接池:C3P0连接池,DBCP连接池,Porxool连接池(黑体比较常用)等

那么到底他们之间是什么关系呢?

数据源是指数据的来源,比如数据库。连接池是指这样一个“池子”,池子中的每个东西都是连接数据源的一个“连接”,这样别人想连接数据源的时候可以从这      个“池子”里取,用完以后再放回来供以后其他想使用的人使用。

在与数据库打交道的过程中,每次操作数据库都需要创建connection连接,势必是很浪费资源的。所以解决办法是建立连接池,初始化时往连接池中放入一定数量的连接,需要时从池中取出连接,使用完毕后将连接放回池子。

所以,连接池不是必须的,只是提高效率用的。

1.使用JDBC数据源(没有连接池)

Class.forName("com.mysql.jdbc.Driver");

String url="jdbc:mysql://localhost:3306/test";

Connection connection =  DriverManager.getConnection(url,"root" ,"123");

所以上面可以看到,不使用连接池,只需要上述几行代码,就可以得到connection ,但是记住,这样子是很浪费资源的。

2.使用JNDI数据源

JNDI数据源的使用,一定是要放在web项目里面的(不考虑spring的配置),也就是要经过服务器的配置,这点让我摸索了很久。

既然要经过服务器的话,那么我是tomcat,在conf中context.xml中加入如下:

url="jdbc:mysql://localhost:3306/test"

driverClassName="com.mysql.jdbc.Driver"

password="123"

username="root"

initialSize="2"

maxActive="3"

maxIdle="1"

minIdle="1"

maxWait="10000"

removeAbandoned="true"

logAbandoned="true"

removeAbandonedTimeout="60"

timeBetweenEvictionRunsMillis="900000"

minEvictableIdleTimeMillis="1800000"

numTestsPerEvictionRun="100"

validationQuery="select count(0) from dual"

poolPreparedStatements="true"

maxOpenPreparedStatements="100"/>

对上面配置相关解释

数据库相关:username,password,driverClassName,url

jndi相关:name,type,factory

tomcat也允许采用其他连接实现,不过默认使用dbcp连接池,即factory默认为org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory

连接数控制与连接归还策略:maxActive,maxIdle,minIdle,maxWait

应对网络不稳定的策略:testOnBorrow,validationQuery

应对连接泄漏的策略:removeAbandoned,removeAbandonedTimeout,logAbandoned

网上很多资料说:使用JNDI数据源时,还需要在tomcat的server.xml和项目的web.xml中加入其它的东东,具体加入什么网上都可以百度到,但是实践证明是不需要的。

下面的代码调用JNDI数据源:Context it = new  InitialContext();

DataSource ds = (DataSource) it.lookup("java:comp/env/mydataSource");

Connection conn = ds.getConnection();

注意:lookup方法中的内容  java:comp/env/为固定写法,后面跟具体的dataSource名称

下一篇文章中,将会仔细讲讲spring怎样配置数据源(连接池)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值