ORM框架(Object Relationship Mapping):对象关系映射框架
对象间的关系:
数据库:
一对一
一对多
java:
一对一
一对多
多对多
继承
映射
ORM框架主要是处理对象间的关系和对象与数据库的映射,解决对象和关系型数据库不匹配的框架技术。
通过配置文件,修改少量代码进行业务扩展
相对于Hibernate 等数据库而言是“半自动化”的ORM实现,“全自动”ORM实现了POJO和数据库表之间的映射,
及sql的自动执行。MyBatis等关注的是POJO和数据库表的映射关系。
ORM流程
1、总配置文件,数据库的连接信息
2、单独映射文件,将JavaBean映射到数据库
3、调用api,操作数据库
MyBatis优势
简单
快速开发
可移植性
独立的接口
开源
数据库连接池
预先创建连接放入连接池,后续使用时直接调用,而不用建立与关闭连接。
ORM框架的底层都是通过反射建立对象,在性能上低于jdbc,但是其灵活性更高。
当返回的列名与JavaBean的属性名相同时,可以进行自动映射,不需要写其他的
缓存
mybatis分为一级缓存和二级缓存
一级缓存就是session对象,默认存在,不需要做配置,主要提升查询性能,
关闭session或者改变了数据库数据会使一级缓存消失
二级缓存可以跨session存在,但是这些session对象需要由同一个工厂产出,
在数据库数据改变后同样会消失,在总配置使用cacheEnabled开启二级缓存,在使用的配置中加cache标签。
二级缓存需要使JavaBean实现序列化接口,可以通过为sql设置useCache属性不使用缓存
加载
将关联的数据一起加载出来,提升查询性能,数据量较大时可能会影响性能
预加载(急加载 eager):将相关数据一起加载出来
懒加载(延迟加载 lazy):在调用相关数据时加载出来
需要配置LazyLoadingEnable(true)和aggressiveLazyLoading(false)
配置加载模式使用fetchType,默认为懒加载