目录
事务
多个操作同时完成,或同时失败称为事务处理。
对数据库的事务而言,应该具有以下几点:创建(create)、提交(commit)、回滚(rollback)、关闭(close)。对应地,MyBatis将事务抽象成了Transaction接口。
MyBatis的事务管理分为两种形式:
- 使用JDBC的事务管理机制:即利用java.sql.Connection对象完成对事务的提交(commit())、回滚(rollback())、关闭(close())等。
- 使用MANAGED的事务管理机制:这种机制MyBatis自身不会去实现事务管理,而是让程序的容器如(JBOSS,Weblogic)来实现对事务的管理。
事务有四个特性:
一致性,持久性,原子性,隔离性。
下订单的业务:
1)订单表中完成增加一条记录的操作
2)订单明细表中完成N条记录的增加
3)商品数据更新(减少)
4)购物车中已支付商品删除
5)用户积分更新(增加)
在MyBatis框架中设置事务
<transactionManager type="JDBC"></transactionManager> ===>程序员自己控制处理的提交和回滚
可设置为自动提交
sqlSession = factory.openSession(); ===>默认是手工提交事务,设置为false也是手工提交事务,如果设置为true,则为自动提交.
sqlSession = factory.openSession(true); ===>设置为自动提交,在增删改后不需要commit();
缓存
MyBatis框架提供两级缓存,一级缓存和二级缓存.默认开启一级缓存。
缓存就是为了提交查询效率。
使用缓存后,查询的流程:
查询时先到缓存里查,如果没有则查询数据库,放缓存一份,再返回客户端。下次再查询的时候直接从缓存返回,不再访问数据库.如果数据库中发生commit()操作,则清空缓存。
加了缓存,第二次就效率加大了!如果数据库发生改变,则清空缓存!(重点)
我们可以将缓存放在生活中电商购物中来理解:
数据库就类似一个全国的大仓库,缓存就相当于某地区的大仓,用户下单的东西一定是平台售卖的,卖家会先在地区仓里面调,如果地区仓里面没有,就要到全国的大仓(数据库)里调,一般情况下地区仓没有了会在国仓里调一部分给地区仓,方便下一回地区仓调货。
等下次购买就可以直接从地区仓(缓存)中调货了!
一级缓存使用的是SqlSession的作用域,同一个sqlSession共享一级缓存的数据。
二级缓存使用的是mapper的作用域,不同的sqlSession只要访问的同一个mapper.xml文件,则共享二级缓存作用域。(mybatis提供一级、二级缓存,默认开启一级缓存)
什么是ORM
ORM(Object Relational Mapping):对象关系映射
MyBatis框架是ORM非常优秀的框架。
java语言中以对象的方式操作数据,存到数据库中是以表的方式进行存储,对象中的成员变量与表中的列之间的数据互换称为映射。整个这套操作就是ORM。
更通俗的理解就是将信息可视化,表格化!
持久化的操作:将对象保存到关系型数据库中 ,将关系型数据库中的数据读取出来以对象的形式封装