基础篇
1. 概念
- JDBC:Java Database Connectivity,意为Java数据库连接。
- JDBC是Java提供的一组独立于任何数据库管理系统的API。
- Java提供接口规范,由各个数据库厂商提供接口的实现,厂商提供的实现类封装成jar文件,也就是我们俗称的数据库驱动jar包。
- 学习JDBC,充分体现了面向接口编程的好处,程序员只关心标准和规范,而无需关注实现过程。
2. 防止sql注入:
- 预编译sql语句
- 变量位置使用
?代替 - 通过
preparedStatement.setString(index, 变量)方式设置变量值 - 其中通过为变量值添加
"、并且转义其中的符号方式,避免sql注入
3. ThreadLocal ——一个线程在多次数据库操作过程中,使用同一连接
ThreadLocal用于保存某个线程共享变量,原因是在Java中,每一个线程对象中都有一个ThreadLocalMap<ThreadLocal, Object>,其key就是一个ThreadLocal,而Object即为该线程的共享变量。
而这个map是通过ThreadLocal的set和get方法操作的。对于同一个static ThreadLocal,不同线程只能从中get,set,remove自己的变量,而不会影响其他线程的变量。
- 在进行对象跨层传递的时候,使用ThreadLocal可以避免多次传递,打破层次间的约束。
- 线程间数据隔离。
- 进行事务操作,用于存储线程事务信息。
- 数据库连接,
Session会话管理。1、ThreadLocal对象.get: 获取ThreadLocal中当前线程共享变量的值。
2、ThreadLocal对象.set: 设置ThreadLocal中当前线程共享变量的值。
3、ThreadLocal对象.remove: 移除ThreadLocal中当前线程共享变量的值。
注:
private static ThreadLocal<Connection> threadLocal = new ThreadLocal<>();
ThreadLocal原理没有讲
4. DAO
- DAO:Data Access Object,数据访问对象。
5. 事务
数据库事务就是一种SQL语句执行的缓存机制,不会单条执行完毕就更新数据库数据,最终根据缓存内的多条语句执行结果统一判定! 一个事务内所有语句都成功及事务成功,我们可以触发commit提交事务来结束事务,更新数据! 一个事务内任意一条语句失败,即为事务失败,我们可以触发rollback回滚结束事务,数据回到事务之前状态!
6. 总结
jddbc整体流程:
- Druid、HiKari等连接池帮忙进行,通过配置设置
- 注册驱动
- 获取数据库连接
- 封装DAO层进行,将sql操作封装成方法,方法内部进行如下操作 3. 预编译sql语句 4. sql语句中插入变量,执行sql语句,接收结果 5. 处理结果 6. 释放资源