JDBC
一、概述
Java DataBase Connectivity : Java 数据库连接
Java语言操作关系型数据库的一套规则(接口),各个数据库厂商去实现这套接口,提供数据库驱动jar包。真正执行的代码是驱动包中的实现类。
JDBC的好处:各数据库使用相同的接口,Java代码不需要针对不同数据库分别开发。可随时替换底层数据库,访问数据库的Java代码基本不变。
二、DriverManager
注册驱动
1 | Class.forName("com.mysql.jdbc.Driver"); |
Driver类源码中含有静态代码块,静态代码块中直接就初始化驱动对象了。
注:MySQL5之后的驱动包,可以省略注册驱动这一步。
获取连接
参数:
Connection
获取执行SQL的statement对象
普通执行SQL对象
Statement createStatement()
预编译SQL的执行SQL对象:防止SQL注入
PreparedStatement prepareStatement(sql)
执行存储过程的对象
CallableStatement prepareCall(sql)
事务管理
Statement
执行SQL语句
ResultSet
封装DQL查询语句的结果
获取查询结果:
PreparedStatement
继承自Statement类,预编译SQL语句并执行,预防SQL注入问题。
SQL注入:通过操作输入来修改事先定义好的SQL语句,以达到执行代码对服务器进行攻击的方法。
- 防止SQL注入:它相当于把你输入的敏感标点前加入
转义字符\
,使得整体看成文本,而不会和代码进行结合,避免你输入的内容改变了代码的原义。 - 预编译SQL:可提升性能。开启此功能需要设置参数
useServerPrepStms=true
数据库连接池
概述
数据库连接池是个容器,负责分配、管理数据库连接(Connection)。
它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个。
释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏
好处:
- 资源重用
- 提升系统响应速度
- 避免数据库连接遗漏
实现
标准接口:DataSource
官方提供的标准接口,由第三方实现此接口。
功能:获取连接
Connection getConnection()
目前常用的数据库连接池:
Druid(德鲁伊) 阿里巴巴开源的数据库连接池项目
功能强大,性能优秀,是Java语言最好的数据库连接池之一。
使用步骤
- 导入jar包 druid-1.1.12.jar
- 定义配置文件
- 加载配置文件
- 获取数据库连接池对象
- 获取连接