数据库衔接池Java实现小结[Java编程]
本文“数据库衔接池Java实现小结[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
因为工作需求要利用到衔接池,所以拜读了互联网上众多前辈的文章,学了不少经验,这里想做一个小结,加上自己的设法和在一同,但愿能给大家一些帮忙.
目的:消除数据库频繁衔接带来的开销和瓶颈.
办理筹划:不过量的限制用户的利用,既不能太多的要求用户按规定的办法得到和利用数据库连尽大概保持用户的习惯
目前的很多办法都是要求用户只能按规定办法利用衔接,不能利用直接关闭数据衔接的办法.办理办法就是利用代理类,来中间办理.可以参考http://www-900.ibm.com/developerWorks/cn/java/l-connpoolproxy/index.shtml
能保护衔接的正常状况
因为针对数据库衔接成立的资源,假如不能及时的释放,就会影响下一次数据衔接的利用.比方在sql 2k中,一个衔接差别成立多条Statement不然操作时会有数据衔接占线的非常,所以必须在偿还衔接今后释放这些资源.
//判断是利用了createStatement语句
if (CREATESTATE.equals(method.getName()))
{
obj = method.invoke(conn, args);
statRef = (Statement)obj;//记录语句
return obj;
}//判断能否调用了close的办法,假如调用close办法例把衔接置为无用状况
精确保护类不被违例利用
if(CLOSE.equals(method.getName()))
{
//设置不利用标志
setIsFree(false);
//查抄能否有后续工作,排除该衔接无用资源
if (statRef != null)
statRef.close();
if (prestatRef != null)
prestatRef.close();
return null;
}
一个考虑就是不能让用户随便利用代理类,而只能自己利用,一个就是用内部私有类,一个就是利用只有指定类才能调用的标志.我的实现就是采取后者.
/**
* 成立衔接的工厂,只能让工厂调用
* @param factory 要调用工厂,并且一定被精确初始化
* @param param 衔接参数
* @return 衔接
*/
static public _Connection getConnection(ConnectionFactory factory, ConnectionParam param)
{
if (factory.isCreate())//判断能否精确初始化的工厂
{
_Connection _conn = new _Connection(param);
return _conn;
}
else
return null;
}
以上是“数据库衔接池Java实现小结[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |