java事务和0配置结合mybatis(不用springmvc和springboot)

  • 什么是事务
    事务就是一系列的动作,他们被当做一个单独的工作单元,要么
    全部完成,要么全部不起作用。

  • 事务的特点(ACID:取4个特点的首字母)
    1.原子性(atomicity):所有的操作要么全部做完要么全部不做,在执行过程中出错,会回滚到开始前的状态,事务整体不可再分。
    2.一致性(consistency):事务开始前后,数据库的完整性没有发生改变。
    3.隔离性(isolation):同一时间,只允许一个事务请求同一数据,不同事务之间互不干扰。
    4.持久性(durability):事务完成后,事务对数据库的所有更新都是长久性的,不能回滚。

  • 事务的并发问题
    1.脏读:比如事务a读取了事务b更新的数据,然后b回滚操作,就叫脏读。
    2.不可重复读:事务a多次读取同一数据,事务b在事务a的读取过程中更新并提交,导致事务a多次读取数据不一致(多侧重于修改)。
    3.幻读:事务a在添加数据的过程中,事务b同时添加数据(幻读多侧重于增删)。

  • spring的事务配置
    1.xml方式配置
    java事务和0配置结合mybatis(不用springmvc和springboot)
    2.声明方式配置
    java事务和0配置结合mybatis(不用springmvc和springboot)

  • spring事务的传播属性
    1.REQUIRED:如果当前没有事务就新建,有就加入,默认REQUIRED,相互影响。
    2.REQUIRED_NEW:新建事务,如果当前存在事务则把当前事务挂起,互不影响。
    3.NESTED:如果当前存在事务,则嵌套内执行,没有就新建,内不影响外,外影响内。
    4.SUPPORTS:支持当前事务,如果没有事务就按普通方法执行。
    5.NOT_SUPPORTED:强制不使用事务,有事务也挂起。
    6.NEVER:强制不使用事务,如果当前事务存在抛异常。
    7.MANDATORY:强制使用事务,如果没使用抛异常。
    spring设置传播属性的方法
    java事务和0配置结合mybatis(不用springmvc和springboot)

  • 事务的隔离级别
    1.DEFAULT:级别最低。
    2.READ_UNCOMMITTED:会出现脏读,不可重复读,幻读问题。
    3.READ_COMMITTED:可以表面脏读,但不可重复度和幻读仍然存在(默认)。
    4.REPEATABLE_READ:解决脏读和不可重复读,有幻读问题。
    5.SERIALIZABLE:级别最高,避免所有并发问题,但性能低下。

  • spring与mybatis结合
    1.导入相应的包
    java事务和0配置结合mybatis(不用springmvc和springboot)

2.创建数据源,设置连接池,这里采用阿里巴巴的德鲁伊连接池。
java事务和0配置结合mybatis(不用springmvc和springboot)
java事务和0配置结合mybatis(不用springmvc和springboot)
3.配置session工厂
java事务和0配置结合mybatis(不用springmvc和springboot)
4.配置sqlSessionTemplate(选配)
java事务和0配置结合mybatis(不用springmvc和springboot)
5.编写dao和service
java事务和0配置结合mybatis(不用springmvc和springboot)