MyBatis 作用域(Scope)和生命周期
Posted 王景迁
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MyBatis 作用域(Scope)和生命周期相关的知识,希望对你有一定的参考价值。
SqlSessionFactoryBuilder
一旦创建了SqlSessionFactory,就不再需要它了。因此SqlSessionFactoryBuilder的最佳作用域是方法作用域(也就是局部方法变量)。
SqlSessionFactory
SqlSessionFactory一旦被创建就会在应用的运行期间一直存在,不能被清除或重建。因此SqlSessionFactory的最佳作用域是应用作用域。最简单的就是使用单例模式。
SqlSession
每个线程都有自己的SqlSession实例。SqlSession实例不是线程安全的,不能被共享,所以它的最佳作用域是方法作用域(也就是局部方法变量)。把关闭操作放到finally块中以确保每次都能执行关闭。示例如下:
1 SqlSession session = sqlSessionFactory.openSession(); 2 try { 3 // do work 4 } finally { 5 session.close(); 6 }
映射器实例(Mapper Instances)
映射器用于创建绑定映射语句的接口。映射器接口的实例是从SqlSession中获得的。它的最佳作用域是方法作用域(也就是局部方法变量)。示例如下:
1 SqlSession session = sqlSessionFactory.openSession(); 2 try { 3 BlogMapper mapper = session.getMapper(BlogMapper.class); 4 // do work 5 } finally { 6 session.close(); 7 }
参考资料
以上是关于MyBatis 作用域(Scope)和生命周期的主要内容,如果未能解决你的问题,请参考以下文章
SqlSessionFactoryBuilderSqlSessionFactorySqlSession作用域(Scope)和生命周期
SqlSessionFactoryBuilderSqlSessionFactorySqlSession作用域(Scope)和生命周期