回顾JDBC
JDBC访问数据库流程
- 加载驱动
- 获取Connection连接对象(消耗性能)
- 获取PrepareStatement对象
- 执行SQL语句
- 获取结果集
- 关闭Connection连接对象
存在问题
频繁访问数据库时,由于反复创建和释放Connection连接对象,导致系统性能下降(特别在高并发情况下)
数据源的概念
数据源是一种提高 JDBC 访问数据库性能的常规手段
数据源的原理
数据源会负责维持一个数据库连接池,连接池中会一次性地提前创建多个 Connection 连接对象,并把这些Connection连接对象保存在连接池中。
-
当程序需要进行数据库访问时,无须进行重新获取 Connection 连接对象,而是从连接池中取出一个空闲的Connection连接对象。
-
当程序使用 Connection 连接对象访问数据库结束后,无须关闭 Connection 连接对象,而是归还给数据库连接池中。通过这种方式,就可以避免频繁访问数据库时性能下降的问题。
-
当 Connection 连接对象耗尽时,连接池会批量创建一批 Connection 连接对象存放到连接池中。当连接池中有长期未使用的 Connection 连接对象,则会自动将其释放,以节省内存空间。
数据源的本质
数据源相比JDBC而言,优点在于大大提高了数据访问的性能,缺点是需要占用更多的内存空间,本质上是一种以空间换时间的性能优化思想。