jdbc学习

128 阅读2分钟

基础篇

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等连接池帮忙进行,通过配置设置
    1. 注册驱动
    2. 获取数据库连接
  • 封装DAO层进行,将sql操作封装成方法,方法内部进行如下操作 3. 预编译sql语句 4. sql语句中插入变量,执行sql语句,接收结果 5. 处理结果 6. 释放资源