什么是数据源-DataSource
简单理解为数据源头,提供了应用程序所需要数据的位置。数据源保证了应用程序与目标数据之间交互的规范和协议,它可以是数据库,文件系统等等。其中数据源定义了位置信息,用户验证信息和交互时所需的一些特性的配置,同时它封装了如何建立与数据源的连接,向外暴露获取连接的接口。应用程序连接数据库无需关注其底层是如何如何建立的,也就是说应用业务逻辑与连接数据库操作是松耦合的。 以下只讨论当数据源为数据库的情况,且为Java环境下JDBC规范下的如何建立与数据库的连接,其他情况类似。
JDBC2.0 提供了javax.sql.DataSource接口,它负责建立与数据库的连接,当在应用程序访问数据库时不必编写连接数据库的代码,直接引用DataSource获取数据库的连接对象即可。用于获取操作数据库Connection对象。
数据源与数据连接池的关系
数据源DataSource建立多个数据库连接池Connection Pool,这些数据库连接(Connection)会保存在数据连接池中,当需要访问数据库时,只需要你从数据库连接池中获取空闲的数据库的连接,当程序员访问数据库结束时,数据连接会放回数据库连接池中。
数据库连接池的优势
传统的JDBC访问数据库技术,每次访问数据库都需要通过数据库驱动器Driver和数据库名称以及密码等等资源建立数据库连接。这样的连接存在俩大问题:1.频繁的建立数据库连接与断开数据库,会消耗大量的资源和时间,降低效率。2,数据库的连接需要用户名和密码等等。这些需要一定的内存和cpu一定开销。