首先SqlSessionFactory与SqlSession都是同一个接口
SqlSessionFactory是通过SqlSessionFactoryBuilder的build方法创建的
而build方法创建的是一个SqlSessionFactory的实现类,叫DefaultSqlSessionFactory
然后这个实现类主要用的设计模式是建造者(build)模式,而里面最终要达到的一个目的是为了创建出DefaultSqlSession,这个是SqlSession的实现类.
前面说了SqlSession也是同一个接口,那么SqlSession=SqlSessionFactory.openSession()就相当于SqlSession=DefaultSqlSession这个实现类.
那么这个实现类是干什么的呢?这个实现类可以进行增删查改以及事务操作等.
那么DefaultSqlSession是怎么进行这些操作的呢?答:通过调用Executor执行器.
所以,咱们平时见到的SqlSession.select()等等其实是在操作DefaultSqlSession.select()的方法,而DefaultSqlSession的方法其实也不是就能够实现对数据库进行操作的,而是通过调用Executor执行器来执行
而Executor执行器其实也是一个接口,而在解析配置文件的时候已经解析出来SQL,那么根据一路传过来的SQL以及参数等信息,Executor再调度StatementHandler等对象对数据库进行增删查改操作.
总结:现在你应该明白了吧,其实我们看到的都是表面,你认为的SqlSession能进行数据库操作其实不是的,是它的实现类再调用底层的Executor,底层的Executor再调度相关数据库操作对象才搞定的,而再要深入它的相关对象,那么就深似海了…