什么是数据源、数据库连接池?
DataSource通常被称为数据源,它包含连接池和连接池管理两个部分,习惯上也经常把DataSource称为连接池。
数据库连接池的基本思想:为数据库连接建立一个“缓冲池”。预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去。
我们可以通过设定连接池最大连接数来防止系统无尽的与数据库连接。更为重要的是我们可以通过连接池的管理机制监视数据库的连接的数量、使用情况,为系统开发、测试及性能调整提供依据。
数据源的来源?(重点)
Web应用服务器和spring容器
在以往的应用中,数据源一般是Web应用服务器提供的(如tomcat)通过JNDI获取,
现在也可以直接在Spring容器中配置数据源,此外,你还可以通过代码的方式创建一个数据源,以便进行无依赖的单元测试。
------------------------------------------------------
常用连接池
C3P0
一个开放源代码的JDBC连接池,它在lib目录中与Hibernate一起发布,包括了实现jdbc3和jdbc2扩展规范说明的Connection 和Statement 池的DataSources 对象,比较耗费资源,效率较低,不赘述。
DBCP
JDBC连接池,在实践中存在BUG,在某些种情会产生很多空连接不能释放,Hibernate3.0已经放弃了对其的支持,不赘述。
Proxool
一个Java SQL Driver驱动程序,提供了对你选择的其它类型的驱动程序的连接池封装。可以非常简单的移植到现存的代码中。完全可配置。快速,成熟,健壮。
可以透明地为你现存的JDBC驱动程序增加连接池功能,负面评价较少,使用的人不多,而且它还提供即时监控连接池状态的功能,便于发现连接泄漏的情况。
备注:
Spring 推荐使用dbcp
Hibernate 推荐使用c3p0和proxool
Druid
java最好的数据连接池,可见:https://www.cnblogs.com/niejunlei/p/5977895.html
------------------------------------------------------
数据源如何识别驱动?
多半能根据url来寻找正确的驱动,实在不行可通过driverClassName来设置。