mybatis调用链路
阅读数:120 评论数:0
跳转到新版页面分类
python/Java
正文
一、概述
二、SqlSessionFactory
SqlSessionFactory由Mybatis配置文件和映射文件,使用SqlSessionFactoryBuilder进行创建,它是用于获取SqlSession对象的工厂类。
三、SqlSession
SqlSession 的实例不是线程安全的,因此是不能被共享的,所以它的最佳的作用域是请求或方法作用域。
SqlSession是mybatis的核心操作类,对数据库的crud都封装在这个接口,其默认的实现类是DefaultSqlSession。
四、Executor
Executor可以简单理解为JDBC中statement的封装版。
BaseExecutor是一个抽象类,这种通过抽象类实现接口的方式是适配器设计模式的体现,主要用于方便次一级子类对接口中方法的实现。
一个Statement接口对象只执行一次,执行完毕就会把Statement接口对象销毁。是MyBatis中默认使用的执行器,每执行一次update或select,就开启一个Statement对象,用完立刻关闭Statement对象(可以是Statement或PrepareStatement对象)。
重用指的是重复使用Statement,它会在内部利用一个Map把初始化的Statement都缓存起来,每次在执行一条SQL语句时,它都会去判断之前是否存在基于该SQL缓存的Statement对象,存在而且之前缓存的Statement对象对应的Connection还没有关闭的时候就继续用之前的Statement对象,否则将初始化一个新的Statement对象,并将其缓存起来。因为每一个新的SqlSession都有一个新的Executor对象,所以我们缓存在ReuseExecutor上的Statement的作用域是同一个SqlSession。
用于将多个Statement对应的SQL语句,交给一个Statement对象一次输送到数据库,进行批处理操作
五、Transaction
保证一组相关的数据库操作的一致性,要么同时成功,要么同时失败。
六、DataSource
利用池化技术,维护了一定量的connection.减少了创建和销毁connection带来的性能损耗。同时可以提供一些辅助的功能,如sql预编译、sql监控等。
七、Connection
java程序与数据库建立的网络连接,创建和销毁是比较耗费资源的。