A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 g207776411 于 2018-5-21 15:11 编辑

Day11事务的使用和概述


Day_11 事务的使用和概述事务的特征:ACID特性
MySQL 事务主要用于处理操作量大,复杂度高的数据 比如说,在人员管理系统中,你删除一个人员,你即需要删除人员的基本资料也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务
面试重点记住ACID是什么,还有事务的特征
  • 交叉执行
  • 原子性

    • 事务的不可分割,组成事务的各个逻辑单元不可分割


  • 一致性

    • 事务执行的前后,数据完整性保持一致.

  • 隔离性(企业中必定会去做事务的并发处理)

    • 事务执行不应该受到其他事务的干扰.
    • 数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。

  • 持久性

    • 事务一旦结束,数据就持久化到数据库中


隔离性的隔离级别
  • 未提交
  • 可重复度
  • 读提交
  • 串行化

一个事务的执行 ,不应该受到其他事务的干扰
  • 脏读
  • 不可重复读
  • 虚读/幻读: 虚读是内部执行的   不可演示

  • 设置事务的隔离级别

    • 查询事务的隔离级别命令  select@@txisolation

  • read  uncommitted
  • read committed
  • repeatable read
  • serializable    可以限制不可重复读,避免脏读,避免幻读

事务管理的核心操作步骤
Connection ; conn
核心思想;
  • 多种事务使用同一个(即业务逻辑的操作要使用同一个Connection对象)Connectuion 对象

开启事务
  • coon.setAutoCommit(false)  

    • 业务逻辑的操作,我们需要用同一个connection对象

  • 执行完SQL语句以后提交事务:

    • conn.commit();

  • 一旦有异常: 回滚个事务

    • conn.rollback()


  **![img](file:///C:\Users\Administrator\AppData\Roaming\feiq\RichOle\3588662937.bmp)
  • 我们要遵循:

    • 高可用


    • 高性能


连接池概述和使用(Druid和才c3p0连接池的使用)
自定义连接池看,自定义连接数量
连接池的使用:
  • 解决多次操作数据库时Connection对象的多次创建
  • 解决了浪费系统资源的问题

如何增强一个类中的方法
  • 一种,采用继承的方式:

    • 前提要知道当前对象所属的类是哪个类
    •   
        class

  • 装饰者模式

    • 一\增强的类和被增强的类实现相同的接口
    • 二\在增强的类中获得被增强的类的引用

  • 动态代理

  • 面向接口的编程:

    • public void adb(List list){
      }


Druid连接池
连接池种类: 公测DBCP \C3p0  可插拔的
连接池配置文件的导入:
  Properties propertied = new  Properties();
  ​
  properties.load(new FileInputStream("src/druid.properties"));
  //导入配置文件
  DataSource data= DruidDatasourcefactory.createDataSource(properties);
  ​
C3P0连接池的使用
用配置形式的C3P0
改写工具类DButils多条记录查询
  • 创建实体类,就是创建类的一个对象

    • 无论我们在类中重载构造方法传入多少个参数,我们必须把他的无参构造写出来


重点
注意:真正代表一个类中是否有这个成员,是通过get和set方法来决定的
  • 重点:如果我们在查询表数据操作的时候,封装的类中的成员和数据库的字段名不对应,那么我们就需要写sql语句用as重命名字段名,用于查询
  • BeanHandler

    • 查询单独的一条的数据

  • BeanListHandler

    • 查询所有的数据

  • ScalarHandler

    • Object obj= querRunner.quer("select count() from account ", new ScalarHandler())          这里 count()返回的值实际都是long类型的值

  • KeyedHandler



XML可扩展标记语言(HTML也是标记行语言)
XML的作用
  • 传输 和 存取数据
  • 任何语言都可以来解析
  • 软件的配置文件

数据交换:  例如我们在一个平台上可以获取其他网站上的信息 ,入支付宝是买电影票
xml的编写步骤
  • XML必须有关闭标签

    • 属性必须要用引号引起来
    • 不要瞎写,不要自创一派

  • XML的文档声明
  • XML的注释
  • XML的元素
  • XML的属性
  • XML的特殊字符和CDATA区

    • CDATA区
    • 指的是在CDATA中的全都代表文档



0 个回复

您需要登录后才可以回帖 登录 | 加入黑马