欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Jdbc学习笔记——第三天

程序员文章站 2022-04-04 23:51:13
...

Jdbc学习笔记—第三天

Jdbc笔记 第三天

一.复习

Jdbc学习笔记——第三天

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

1. 作用

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

2. 命名规范

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

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

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

Jdbc学习笔记——第三天

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层函数)
    Jdbc学习笔记——第三天

5. 使用ThreadLocal对象解决service层事务控制问题

1)ThreadLocal — 线程局部变量

​ 一个ThreadLocal对象可以为每一个线程保存一个独占数据

2)使用API

​ ① 创建对象 ThreadLocal<独占数据的类型> tol = new ThreadLocal<…> ();

​ ② 存数据 tol.set( 数据 );

​ ③ 取数据 tol.get() —> 独占数据

​ ④ 解除与当前线程的绑定 tol.remove()

3) 作用

​ ① wei一个线程锁定一个数据, 使得我们在线程的任意代码组成部分里都可以获取到这个数据(一个数据)

​ ② 为不同的线程锁定不同的数据

4)使用ThreadLocal改写JdbcUtil

Jdbc学习笔记——第三天

5) 理论上,conn应该在线程结束时被关闭,实际开发中,线程结束位置不固定,一般会在事务结束时就关闭连接,关闭同时切记解除conn和当前线程的绑定关系( dao层函数千万不能关闭连接 )

Jdbc学习笔记——第三天
Jdbc学习笔记——第三天

6) 业务层开发步骤

​ ① 获取数据库连接,并且控制提交策略为手动提交

​ ② 完成业务功能( 数据校验 , 数据库的访问操作 — 需要dao的对象 )

​ ③ 提交 或者 回滚

​ ④ 释放资源

Jdbc学习笔记——第三天