• MyBatis扩展之事务和缓存以及ORM


    行到水穷处,坐看云起时


    前言

    mybatis终于要结束了


    一、事务

    多个操作同时完成,或同时失败称为事务处理
    事务有四个特性:一致性,持久性,原子性,隔离性

    例子:
    下订单的业务:

    1. 订单表中完成增加一条记录的操作
    2. 订单明细表中完成N条记录的增加
    3. 商品数据更新(减少)
    4. 购物车中已支付商品删除
    5. 用户积分更新

    以上操作必须都成功,不能单个成功(保证数据库数据一致性)

    二、在mybatis框架中设置事务

    <transactionManager type="JDBC"></transactionManager>
    
    
    • 1
    • 2

    程序员自己控制处理的提交和回滚

    可设置为自动提交

    sqlSession = factory.openSession();
    
    
    • 1
    • 2

    默认是手工提交事务,设置为false也是手工提交事务,如果设置为true 则为自动提交

    sqlSession = factory.openSession(true);
    
    • 1

    这样就设置为自动提交了,在增删改后不需要commit()

    三、缓存

    MyBatis框架提供两级缓存,一级缓存和二级缓存
    默认开启一级缓存
    很少自己去设置二级缓存
    mybatis框架默认提供开启一级缓存(可提高查询效率)

    缓存就是为了查询效率

    使用缓存后,查询的流程:
    在这里插入图片描述
    一级缓存使用的是SqlSession的作用域,同一个SqlSession共享一级缓存的数据
    二级缓存使用的是Mapper的作用域,不同的sqlSession只要访问的是同一个mapper.xml文件,则共享二级缓存作用域
    在这里插入图片描述

    二级缓存的开启方法在资源/文档中可以看到

    四、ORM

    Object Relational Mapping
    对象关系映射
    MyBatis框架是ORM非常优秀的框架

    java语言中以对象的方式操作数据存到数据库中是以表的方式进行存储,对象中的成员变量与表中的列之间的数据互换,称为映射,
    整个这套操作就是ORM(持久化操作)

    持久化的操作:将对象保存到关系型数据库中,将关系型数据库中的数据读取出来以对象的形式封装

    MyBatis是持久化层优秀的框架


    总结

    不在pom中指定资源文件就会导致resources目录之外的xml和properties文件读不出来,会丢失

  • 相关阅读:
    上手Python之列表
    day17--抓包工具fillder的使用
    Win32 - 窗口
    CSS期末复习速览(二)
    信息系统项目管理师必背核心考点(七十五)软件质量特性
    Java校园二手平台项目商城电商购物系统(含源码+论文+答辩PPT等)
    C++学习笔记(四): 类、头文件、对象
    springBoot 多次请求限制
    【多线程】三种实现方案
    ipad手写笔有必要买原装吗?第三方性价比高的手写笔推荐
  • 原文地址:https://blog.csdn.net/tcben/article/details/126763659