一、阻抗不匹配
可能是左半边要的是一个字段,右边给的是一个对象
这个时候就需要把右边的对象拆开
可能是左半边要的是一个对象,右边给的是一个字段
这个时候就需要把右边的字段整合起来
最开始是为了解决这些问题
ORM —— 协助我们连接数据库,并解决阻抗不匹配问题
Object-Relation Mapping 框架——对象关系映射框架
做 数据——对象的映射
如今几乎市面上所有的ORM框架,都是对数据库连接的封装
它就可以帮忙管理对象的关系,数据库的连接
所以JDBC不用自己写,它就承包了
常见的ORM框架(JAVA的ORM框架,基本上都是对JDBC的一种封装)
(按出现的时间顺序)
JPA —— (太过于灵活)
Hibermate —— (常应用在巨型项目,特别严谨)
全自动化的对对象的映射
Mybatis ---->ibatis —— (又灵活,又严谨,而且扩展性高)
(本来叫ibatis,属于apache,后来被google收购,改名为Mybatis)
是一个针对查询过程产生映射关系的ORM框架
二、
1、启动过程
2、配置过程——应用级别,全系统有效
Configuration.xml
SqlSessionFactoryBuilder通过Configuration.xml加载进来
SqlSessionFactoryBuilder
里面存放 连接哪个数据库,以哪种形式连接,怎么连接,用户名密码多少
它会生产一个SqlSessionFactory
上面所存放的东西都会记录到这个对象里面来,此时SqlSessionFactoryBuilder就会失效,它已经完成了它的使命
SqlSessionFactory 全局唯一
所有的SqlSession都由SqlSessionFactory 生产,由此,它也拥有管理权限
3、运行过程——线程级别,每个请求或每个方法有效
一次请求过来,SqlSessionFactory 就会生产一个SqlSession,就类似给了一个JDBC里的Connection
由于Web项目的特殊性,一个请求就是一个线程,所以我们可以理解成一个请求一个SqlSession
然后拿SqlSession就可以去执行查询数据库的过程
(其实就是SqlSession创建Mapper,使用Mapper这个最终解决字段与对象对应关系的工具类,使用Mapper去查询数据库并且生成对象)
一个SqlSession可以对应n 个Mapper