Jdbc学习笔记——第三天

Jdbc学习笔记—第三天

Jdbc笔记 第三天

一.复习

在这里插入图片描述

二. DAO (data access object 数据访问对象)

1. 作用

完成对数据库里一张表所有数据访问操作(增删改查)

2. 命名规范

  1. 为每一张表提供一个与之对应的DAO程序

  2. 定义DAO接口,命名时 “表名+DAO"

为接口提供实现类,命名时 “接口名+Impl"

在这里插入图片描述

3. 好处

对调用者屏蔽底层数据库的差异

三. Service( 业务层 )

1. 作用:

为了完成用户的一个具体的业务需求,需要定义函数来实现具体的业务过程(一定会落实到具体的数据库操

作上)

2. 定义规则

  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程序添加事务控制代码

  1. 目标:为了事务控制,需要在一个事务内部的不同代码间,使用一个连接对象
  2. 解决 : 使用参数传递的方式解决(将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的对象 )

​ ③ 提交 或者 回滚

​ ④ 释放资源

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值