myBatis读书笔记

一、ORM映方式:

1 数据表映射类
2 数据库表的行映射对象(对象实例)
3 数据库的列(字段)映射对象属性

二、SqlSessionFactory

单个数据库映射关系经过编译后的内存镜像。每一个MyBatis的应用程序都以一个sqlSessionFactory对象实例为核心,一旦被创建,应该在执行期间一直存在,线程安全,采用单例模式。

三、SqlSession对象

应用程序和持久层之间执行交互操作的一个单线程对象,每一个线程有自己的sqlsession实例,不能被共享。

四、mybatis事物管理:
jdbcTranaction使用java.sql.Connection的commit和rollback完成事物操作
ManagedTransaction 让容器管理事物的整个生命周期,其commit和rollback不做任何操作

五、缓存机制

mybatis的缓存机制是基于id进行缓存的。在hashmap中缓存数据,对象的id作为key,对象作为value保存。

1.一级缓存(SqlSession级别)

myBatis的一级缓存是SqlSession级别的缓存。保存在SqlSession对象的HashMap对象中,因此不同的SqlSession之间的缓存互不影响。同一个SqlSession中执行两次相同的sql操作,第一次会查询完毕并将数据写到缓存(内存)中,第二次直接从内存中读取。如果期间SqlSession执行了DML操作(插入、更新和删除)并提交到数据库,缓存失效。默认开启

2.二级缓存(mapper级别)

二级缓存是mapper级别的缓存,多个SqlSession使用同一个Mapper的sql操作数据库,得到数据保存在二级缓存区域。二级缓存比一级缓存范围广,多个SqlSession可以共用二级缓存。作用域是mapper的同一个namespace。默认不开启,需要配置开启

注:使用二级缓存,和查询结果映射的java对象必须实现(serializable接口),确保可以被序列化和反序列化,如果存在父类,必须实现该接口。理由:二级缓存的存储介质是多样化的,不一定在内存,可以是磁盘或远程服务。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值