Mybatis 之创建时的4个核心对象的生命周期

Mybatis 的核心对象包括SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession和Mapper。SqlSessionFactoryBuilder创建SqlSessionFactory后即结束生命周期;SqlSessionFactory作为单例长期存在;SqlSession在每个请求或方法内创建并关闭,生命周期短暂;Mapper接口在SqlSession关闭后结束使命。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Mybatis 在执行数据库操作之前,先要有4个对象,分别是SqlSessionFactoryBuilderSqlSessionFactorySqlSession以及对应直接操作增删改查的Mapper

其中,SqlSessionFactoryBuilder 首先通过 builder 方法,根据获得的配置文件创建一个 SqlSessionFactory 工厂,然后SqlSessionFactoryBuilder 就不需要了,所以 SqlSessionFactoryBuilder 生命周期为方法局部,用完即亡;

SqlSessionFactory是用于创建sqlSession会话用的。在mybatis中,每次使用SqlSession都会被创建(同一次事务内的SqlSession共享),而创建SqlSession 就需要 SqlSessionFactory,故 SqlSessionFactory 要一直存在(一般是单例),生命周期将伴随着整个mybatis应用;

sqlSession 是用户用于进行增删改查的工具(其实内部是具体操作Executor执行器去操作jdbc的底层,这里先不深入),当sqlSession被开启(如 SqlSessionFactory.openSession() 方法)时开启,当sqlSession用完后被关闭(如 sqlSession.close() 方法)时消亡,生命周期为一个请求request或者一个method内。(ps:这里提一下,我们平时用mybatis结合Spring用的时候,是无需手动进行开启和关闭操作的,因为框架里已经帮我们自动做了这些操作,和Spring集成后,内部用的sqlSession具体为SqlSessionTemp,并且持有对DefaultSqlSession的一个代理。当进行对数据的操作时,代理类会对sqlSession进行open和close操作,源码如下,看不懂可以略过,这里只是简单说下)

最后也就是我们用到的 Mapper接口,当sqlSession被关闭后,Mapper也就完成了使命,随后也就跟着消亡了。

下边总结一下:

对象生命周期
SqlSessionFactoryBuilder方法局部(method)
SqlSessionFactory应用级别(application)
SqlSession请求或操作(request/method)
Mapper方法(method)

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值