Jdbc学习笔记——第三天
程序员文章站
2022-04-04 23:51:13
...
Jdbc学习打卡
Jdbc学习笔记—第三天
Jdbc笔记 第三天
一.复习
二. DAO (data access object 数据访问对象)
1. 作用
完成对数据库里一张表所有数据访问操作(增删改查)
2. 命名规范
-
为每一张表提供一个与之对应的DAO程序
-
定义DAO接口,命名时 “表名+DAO"
为接口提供实现类,命名时 “接口名+Impl"
3. 好处
对调用者屏蔽底层数据库的差异
三. Service( 业务层 )
1. 作用:
为了完成用户的一个具体的业务需求,需要定义函数来实现具体的业务过程(一定会落实到具体的数据库操
作上)
2. 定义规则
-
每一个业务功能定义一个函数
-
程序命名规范 ” xxxx+Service“ — 接口 ; 实现类:”接口名+Impl“
3. Jdbc中的事务控制
1) jdbc中默认的事务提交策略为 “一条命令提交一次” — 自动提交
2) 手动提交 API
① conn.setAutoCommit( boolean ); true–自动提交 false–手动提交
— 一经设置,永久生效(在当前conn的生命周期中,一直有效)
② conn.commit(); conn.rollback();
3) 代码结构
try{
conn.setAutoCommit(false);
update fromA
if( xxxxx ) throw new RuntimeException(....);
update toA
conn.commit();
}catch(Exception e){
conn.rollback();
throw new RuntimeException(....);
}
4. 给service程序添加事务控制代码
- 目标:为了事务控制,需要在一个事务内部的不同代码间,使用一个连接对象
- 解决 : 使用参数传递的方式解决(将service层的连接对象传给dao层函数)
5. 使用ThreadLocal对象解决service层事务控制问题
1)ThreadLocal — 线程局部变量
一个ThreadLocal对象可以为每一个线程保存一个独占数据
2)使用API
① 创建对象 ThreadLocal<独占数据的类型> tol = new ThreadLocal<…> ();
② 存数据 tol.set( 数据 );
③ 取数据 tol.get() —> 独占数据
④ 解除与当前线程的绑定 tol.remove()
3) 作用
① wei一个线程锁定一个数据, 使得我们在线程的任意代码组成部分里都可以获取到这个数据(一个数据)
② 为不同的线程锁定不同的数据
4)使用ThreadLocal改写JdbcUtil
5) 理论上,conn应该在线程结束时被关闭,实际开发中,线程结束位置不固定,一般会在事务结束时就关闭连接,关闭同时切记解除conn和当前线程的绑定关系( dao层函数千万不能关闭连接 )
6) 业务层开发步骤
① 获取数据库连接,并且控制提交策略为手动提交
② 完成业务功能( 数据校验 , 数据库的访问操作 — 需要dao的对象 )
③ 提交 或者 回滚
④ 释放资源