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 @   努力的达子  阅读(29)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示