6.生命周期和作用域

理解我们之前讨论过的不同作用域和生命周期类别是至关重要的,因为错误的使用会导致非常严重的
 
并发问题
并发问题的产生:获取到连接不关闭
1.SqlSessionFactoryBuilder
    1.1一旦创建了SqlSessionFactory,就不再需要它了
    1.2局部变量

2.SqlSessionFactory
    2.1说白了就是可以想象成:数据库连接池
    2.2SqlSessionFactory一旦被创建就应该在应用的运行期间一直存在,没有任何丢其他或者重新创建另外一个实例
    2.3因此SqlSessionFactory的最佳作用域是应用作用域
   2.4最简单的就是单例模式或者静态单例模式
   
3.SqlSesion
    3.1连接到连接池的一个请求
    3.2SqlSession的示例不是线程安全的。因此不能被共享的,所以它的最佳作用域是请求或者方法作用域
    3.3用完之后赶紧关闭,负责资源会被占用
    
所以按照上述可以编写自定义的mybatis工具类:
    public class MybatisUtil {
        private static SqlSessionFactory sqlSessionFactory;
    
        static {
            try {
                String resource = "mybatis-config.xml";
                InputStream inputStream = Resources.getResourceAsStream(resource);
                sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        public static SqlSession getsSqlSession(){
            return sqlSessionFactory.openSession();
        }
    }

posted @ 2022-05-13 19:44  努力的达子  阅读(28)  评论(0编辑  收藏  举报