MyBatis组件的生命周期浅谈

所谓生命周期就是每一个对象应该存活的时间,比如一些对象一次用完之后就要关闭,是它们被JVM销毁,以避免继续占用资源,所以我们会根据每个组件的作用去确定其生命周期。

1、SqlSessionFactoryBuild
SqlSessionFactoryBuild的作用在于创建SqlSessionFactory,创建成功后,SqlSessionFactoryBuild就失去了作用,所以他只能存在于创建SqlSessionFactory的方法中,而不要让其长期存在。

2、SqlSessionFactory
SqlSessionFactory可以被认为是一个数据库连接池,它的作用是创建SqlSession接口对象。因为MyBatis的本质就是Java对数据库的操作,所以SqlSessionFactory的生命周期存在于整个MyBatis的英语之中,所以一旦创建了SqlSessionFactory,就要长期保存它,直到不再使用MyBatis应用,所以可以认为SqlSessionFactory的生命周期就等同于MyBatis的应用周期。

3、SqlSession
如果说SqlSession相当于数据库连接池,那么SqlSession就相当于一个数据库连接(Connection对象),你可以在一个事务中执行多条SQL,然后通过她的commit、rollback等方法,提交或回滚事务。所以他应该只存活在一个业务请求中,处理完整个请求后,应该关闭这条连接,让它归还给SqlSessionFactory,否则数据库资源就很快被耗费光了,系统就会瘫痪,所以用try…catch…finally…语句来确保其正确关闭。

4、Mapper
Mapper是一个接口,他由SqlSession所创建,所以它的最大生命周期至多和SqlSession保持一致,尽管他很好用,但是由于SqlSession的关闭,他的数据库连接资源也会消失,所以它的生命周期应该小于等于SqlSession的生命周期。Mapper代表的是一个请求中的业务处理,所以它应该在一个请求中,一旦处理完了相关的业务,就应该废弃它。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值