Java基础
1、数据库连接池
(1)现象:
多线程数据库访问中 ,随着线程结束数据库连接销毁,线程被释放。
每个线程都需要建立数据库连接,耗时,用户响应时间很慢。
(2)数据库连接池
1)连接复用
多线程共用后端物理连接,实现连接复用。
连接池管理物理连接,每个线程租借连接,用完后归还。
2)限流连接
为限制并发访问连接数,数据库服务器端设置最大并发连接数,若超过最大连接数抛 too many connections exception。
一般,在客户端Java程序中实现业务线程排队获取数据库连接限制同时获取数据库连接数,限流来保护后端数据库。
(3)概念
java jar包,介于java应用程序和jdbc物理连接之间,负责帮Java程序管理jdbc连接。
通过连接池暴露的接口,java程序可以获取数据库连接,使用完毕后归还给连接池。
连接池对JDBC连接有效管理,当连接数不足时自动创建连接,空闲连接较多时自动销毁连接,
多线程同时获取连接时提供排队等待保证应用程序有序获得连接。
(4)连接池组件
commons-dbcp.jar、commons-pool.jar、commons-logging.jar
2、Java数据库连接-JDBC
(1)JDBC概念
Java提供的访问数据库的接口规范,接口具体实现由不同厂商的数据库驱动完成。
(2)JDBC常用API
Driver:接口,驱动程序的抽象
通过操作Driver,即可实现对各个驱动程序的操作。
DriverManager:Driver的管理类。
通过Class.forname(DriverName)向DriverManger注册一个驱动程序。
Connection 对象:数据库的物理连接
通过DriverManger.getConnection()方法建立该驱动程序到后端数据库的物理连接。
statement 对象: 实际sql容器/操作sql对象
通过conn.createStatement()/conn.prepareStatement(sql)可以创建一个或多个statement对象。
resultSet:结果集,行和列组成的二元表
3、Spring JDBC-对JavaJDBC的进一步封装
DAO(Data Access Object):数据访问接口
通过接口跟实现(JDBC/mybatis/Hibernate实现)分离方式屏蔽底层实现细节。
JdbcTemplate:Spring JDBC 封装跟业务无关的代码,如打开连接、执行SQL并循环访问结果集、处理异常、清理环境