JDBC连接池

来源:互联网 发布:复制链接在淘宝打不开 编辑:程序博客网 时间:2024/06/06 01:19

首先JDBC就是一套API 接口(JDBC API由一个驱动程序管理器实现对连接到不同数据库的多个驱动程序的管理。
JDBC驱动程序可以全部由Java语言编写,也可以由本地化方法来实现与现有数据库访问接口的连接。
)
连接池只是包装/操作了JDBC API 的接口
之后运行的时候,这些接口的实现会落到你指定的各种数据库的驱动上.如果驱动不遵循JDBC API的规范 连接池会报错
JDBC只是一套接口规范
连接池主要是检查数据库驱动符不符合规范

建立连接池必须实现DataSource这个类
c3p0 和 dbcp都是建立在实现DataSource这个类的基础上运行的

dbcp,它是数据库连接池,由Apache开发,是jdbc范畴中的。它的原理是维护多个连接对象Connection,在web项目要连接数据库时直接使用它维护的对象进行连接,省去每次都要创建连接对象的麻烦。提高效率和减少内存使用。
而c3p0呢,它也是一个jdbc连接池,和dbcp一样为了解决效率问题而存在,但有一些自己的特性和dbcp最大的不同在于它可以自动回收连接,dbcp需要自己手动释放资源返回。不过dbcp效率比较高。
两种方法都有各自的配置文件

dbcp

  //加载文件        InputStream input = T.class.getResourceAsStream("dbcp.properties");        //实例化properties集合        Properties prop = new Properties();        prop.load(input);        //加载核心类        BasicDataSource bds = (BasicDataSource) BasicDataSourceFactory.createDataSource(prop);        //得到一个连接对象        Connection conn = bds.getConnection();

c3p0

 ComboPooledDataSource cpds                =  new ComboPooledDataSource(); Connection conn = cpds.getConnection();

单例模式

程序员:“单例模式简单来说就是,每次下雨都买把伞太浪费了,不如买把伞放包里,要用就拿出来,省钱。”(例如一夫一妻制度)
妹纸:“这样做听起来真是太棒了,那为什么不把所有的东西都做成这样呢?”
程序员:“因为这样做也有它的缺陷,比如说妹纸和男朋友一起出门上班,下雨了只有一把伞就不够用道上的(黑话叫做共享资源争用,或者线程冲突)。”
程序员:“因为伞这种东西是不能两个人共用的(黑话叫线程不安全对象),所以家里只有一把伞就不够了。但是如果是像空调这样大家可以一起用的东西(黑话叫线程安全对象),就可以只买一个,全家人一起用(道上的黑话叫做享元模式)。”
(例如一夫多妻制度)
妹纸:“那就让男朋友自己再去买把伞么”
程序员:“这样当然也可以(黑话叫做私有对象),但是要是男朋友搞丢了,伞也一起搞丢了,而且男人嫌麻烦,不喜欢每天揣把伞,图方便干脆要用的时候自己买伞了,还是很浪费。”
妹纸:“这个简单,那就多买几把伞放家里,谁需要就拿去用好了。”
多买几把伞放家里,谁需要就拿去用就是对象池模式

原创粉丝点击