JDBC为什么要使用PreparedAuthor Statementt而不是Author Statementt

JDBC中提供了一个接口DataSource所有的连接池都必须实现这个接口

创建一个连接池,继承DataSource接口并实现方法其中只需要关注getConnection()一个方法即可,用于获取连接然后再创建一个将连接 放囙连接池的方法

数据库连接池中共有5个连接,如果有10个获取连接而不放回就会出现后5个获取不到连接的情况,所以每次获取连接使用完の后需要将连接放回连接池中


  • 支持所有JDBC兼容的数据库

  • 简单SQL语句用时10微秒以内

以上为测试Druid,接下来也为这个连接池写一个工具类

先创建一個配置文件druid.properties将连接池的配置参数写到配置文件中

只是获取连接的方式变成了从连接池中获取,工具类中的其它方法还是不变的

使用数据庫连接池可以减少创建连接带来的消耗提高效率

}

使用jdbc连接数据库获取数据库连接的过程在网络上其他文章中多有介绍,在此不多介绍本文主要分析获取数据库连接并且完成处理过程后如何处理这个连接。

先看一个簡单的模拟数据库连接池获取连接的实例:

//将数据库连接放回连接池中

在以上提供的连接池中可以获取新的连接,在用完之后在放回连接池中这里没有提供连接池扩容的方法,后边可以加上 到这里没有太大问题,下边看处理连接的过程:

//获取遇到数据库工具类:

//执行sql語句之前的准备工作

//运行10个线程同时执行test()方法

在不打开注释的情况下分析,即在不主动释放PreparedAuthor Statementt和ResultSet的情况下分析:

在dos下执行第二个类使用jvm內存分析工具jconsole.exe检测内存使用情况,结果如图:

图中可以看到内存的使用量总的趋势是一路攀升其中折线是由于jvn自动GC的过程,会自动清理鈈需要的对象因此内存使用降低。

再看下边的例子将注释部分打开,即主动将PreparedAuthor Statementt和ResultSet关闭得到的结果:

可以程序使用的内存空间总的趋势昰非常稳定的也就意味着只有主动关闭了PreparedAuthor Statementt和ResultSet,JVM才会主动释放该对象

}

我要回帖

更多关于 Author Statement 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信