组件的生命周期

现在,你应该已经对MyBatis组件的创建和应用有了一定的了解,写几个crud也是快的飞起。但是,还远远不够。这一节,我们来学习一下组件的生命周期。生命周期是组件的重要问题,尤其是在多线程的环境下,比如互联网应用、socket请求等,而MyBatis也常使用于多线程的环境中,错误使用会造成严重的多线程并发问题。

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

  • SqlSessionFactoryBuilder:它的作用就是创建SqlSessionFactory,创建成功后,它就失去了作用,所以它只能存在创建SqlSessionFactory方法中,而不要让其长期存在。
  • SqlSessionFactory:它可以被认为是一个数据库连接池,它的作用就是创建SqlSession接口对象。因为MyBatis本质上就是Java对数据库的操作,所以SqlSessionFactory的生命周期存在于整个MyBatis的应用之中。所以一旦创建了这个对象,就要长期保存它。所以,SqlSessionFactory的生命周期就是MyBatis应用周期。另外,它是一个重量级对象,占据这数据库的连接资源。如果创建多个SqlSessionFactory,这样不利于对数据库资源的控制,也会导致数据库连接资源被耗光,出现系统宕机等情况,所以尽量避免无穷止的创建。因此,我们希望SqlSessionFactory作为一个单利,让它在应用中被共享。
  • SqlSession:它可以被认为是一个数据库连接对象,你可以在一个事务里面执行多条事务,然后通过它的commit、rollback等方法,提交或者回滚事务。所以它应该存活在一个业务请求中,处理完整个请求后,就应该将其关闭,把它归还给SqlSessionFactory,否则数据库资源很快就会被消耗光,系统就会瘫痪。
  • Mapper:它由SqlSession创建,所以它的最大生命周期至多和SqlSession保持一致。

到此为止,已经初步入门了MyBatis,但是还是停留在表面现象和简单应用上,后文会继续详细学习MyBatis的高级应用。?

下一节:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值