【SSM框架】MyBatis笔记 --- 表之间的关联关系;MyBatis事务;MyBatis缓存机制;ORM概述
一、表之间的关联关系:
- 关联关系是有方向的。
1、四种关联关系:
1)一对多关联:一个老师可以教多个学生,多个学生只有一个老师来教,站在老师方,就是一对多关联。
2)多对一关联:一个老师可以教多个学生,多个学生只有一个老师来教,站在学生方,就是多对一关联。
3)一对一关联:一个老师辅导一个学生,一个学生只请教一个老师,学生和老师是一对一。
4)多对多关联:园区划线的车位和园区的每一辆车,任意一个车位可以停任意一辆车,任意一车辆车可以停在任意一个车位上。
2、一对多关联关系:
客户和订单就是典型的一对多关联关系;
一个客户名下可以有多个订单;
客户表是一方,订单表是多方.客户一中持有订单的集合;
使用一对多的关联关系,可以满足查询客户的同时查询该客户名下的所有订单.;
需求:根据客户的id查询客户所有信息并同时查询该客户名下的所有订单
3、多对一关联关系:
订单和客户就是多对一关联;
站在订单的方向查询订单的同时将客户信息查出;
订单是多方,会持有一方的对象,客户是一方;
需求:根据订单的id查询订单所有信息并同时查询该订单对应的用户信息
总结:无论是什么关联关系,如果某方持有另一方的集合,则使用
二、事务:
- 多个操作同时完成,或同时失败称为事务处理。事务有四个特性:一致性,持久性,原子性,隔离性.
在MyBatis框架中设置事务:
//默认是手工提交事务,设置为false也是手工提交事务,如果设置为true,则为自动提交.
sqlSession = factory.openSession();
//设置为自动提交,在增删改后不需要commit();
sqlSession = factory.openSession(true);
三、缓存:
- MyBatis框架提供两级缓存,一级缓存和二级缓存,默认开启一级缓存。缓存就是为了提交查询效率。
1、使用缓存后,查询的流程:
查询时先到缓存里查,如果没有则查询数据库,放缓存一份,再返回客户端,下次再查询的时候直接从缓存返回,不再访问数据库;
如果数据库中发生commit()操作,则清空缓存。
2、一级缓存使用的是SqlSession的作用域,同一个sqlSession共享一级缓存的数据。
二级缓存使用的是mapper的作用域,不同的sqlSession只要访问的同一个mapper.xml文件,则共享二级缓存作用域。
四、ORM:
- ORM(Object Relational Mapping):对象关系映射
1、MyBatis框架是ORM非常优秀的框架。
java语言中以对象的方式操作数据,存到数据库中是以表的方式进行存储,对象中的成员变量与表中的列之间的数据互换称为映射,整个这套操作就是ORM。
2、持久化的操作:将对象保存到关系型数据库中 ,将关系型数据库中的数据读取出来以对象的形式封装
MyBatis是持久化层优秀的框架。