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接口),确保可以被序列化和反序列化,如果存在父类,必须实现该接口。理由:二级缓存的存储介质是多样化的,不一定在内存,可以是磁盘或远程服务。


猜你喜欢

转载自blog.csdn.net/android_gogogo/article/details/77802470
今日推荐