005,Mybatis生命周期

Mybatis生命周期


V哥官网:http://www.vgxit.com

本博客对应视频教程:http://www.vgxit.com/course/22


1,概述:

我们已经掌握了Mybatis组件的创建以及其基本应用,但是这远远不够,还需要讨论其生命周期。生命周期是组件的重要问题,尤其在多线程的环境中,比如互联网应用,Socket请求等,而Mybatis也常用于多线程环境中,错误使用会造成严重的多线程并发问题。


2,什么是生命周期:

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


3,SqlSessionFactoryBuilder生命周期

SqlSessionFacotryBuilder的作用就是创建SqlSessionFacotry,创建成功之后,这个对象就失去了作用,所以说SqlSessionFacotryBuilder只在创建SqlSessionFacotry的时候用一下就行。所以我们一般情况下我们就在创建SqlSessionFacotry的方法中来定义SqlSessionFacotryBuilder变量,让其成为方法内的一个变量,用完了就直接让Java虚拟机销毁就行了。


4,SqlSessionFactory生命周期

SqlSessionFacotry我们可以理解这个对象就是一个数据库连接池,它的作用是用来创建SqlSession对象。因为mybatis本质上其实就是java的数据库操作,说白了就是jdbc操作。所以SqlSessionFacotry应该存在于整个Mybatis应用中。所以,我们创建了SqlSessionFacotry对象之后,应该让其长期存在,直到Mybatis应用退出。所以我们可以理解为SqlSessionFacotry的生命中欧琪,就等同于Mybatis应用的生命周期。

由于SqlSessionFactory是一个数据库连接池,所以它占据着数据库链接的资源。如果我们创建了多个SqlSessionFactory,那么就会存在多个连接池,这样肯定是不行的,会造成我们不予对数据库连接资源的控制。也会导致数据库连接资源很快就被消耗完了。因此我们一般情况下载应用中我们应该让SqlSessionFactory为单例。


5,SqlSession生命周期

SqlSession就相当于一个数据库链接,你可以在一个失误中执行多条sql,然后通过sqlSession的commit/rollback方法等,提交或者回滚事务。所以它应该存活在一个业务请求中,处理完整个请求后,应该关闭这条连接,关闭连接我们调用的SqlSession的close方法。这里说一下我们调用close方法的时候,其实上底层这个连接是没有关闭的,它是直接归还给了SqlSessinoFacotry。


6,Mapper生命周期

Mapper是一个接口,它是由SqlSession创建的,所以它最大的生命周期最多和SqlSession保持一直。我们的SqlSession关闭之后,Mapper对应的数据库连接资源也会小时,所以说它的生命周期应该小于等于SqlSession的生命周期,所以它应该存在于一个请求当中,如果用完了之后,它就应该被废弃掉。

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

V哥学It

赏小的一个钱吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值