SPRING整合mybatis

发布时间 2023-12-18 16:57:45作者: 一往而深,

SPRING整合mybatis的思路分析

spring的ioc是管理bean的,mybatis中的哪些bean是可以交给spring管理的?

由上面的步骤我们可以看出我们的sqlSessionFactory用来创建SqlSession对象,我们的sqlSession对象可以用来创建动态代理的dao对象,所以我们的核心对象是sqlSessionFactory,应该将他交给spring管理
将sqlSessionFactory交给spring管理的理由
1.将sqlSessionFactory交给spring管理,spring可以帮我们自动创建sqlSession和dao代理
2.SqlSessionFactory是一个重量级的对象,它包含了数据库连接池和事务管理器等重要资源。因此,它是线程安全的,并且在整个应用的生命周期内只需要被创建一
次。通过Spring的IoC容器来管理这个对象,可以确保它的生命周期得到妥善管理,避免不必要的资源浪费(IOC默认单例模式)
3.sqlSessionSessionFactory有mybatis的二级缓存,并且二级缓存是所有sqlSession共享的。所以需要保证sqlSessionFactory是单例的。交给spring管理是最后的选择

在mybatis中,我们的sqlSessionFactory对象是由我们自己创建的,但是由于sqlSessionFactory是一个重量级的对象,其中包含的属性太多了。所以我们之前是使用构建者模式创建的,并且把把sqlSessionFactory对象必要的属性使用配置文件配置,然后读取交给构建者创建的。
现在我们使用IOC来替代构建者创建sqlSessionFactory对象

  • 分析sqlSessionFactory对象需要具备的必要属性

spring整合mybatis

如果一个技术需要和spring整合,需要按照spring提供的整合标提供所需要的jar包,整合表由整合方提供,而不是由spring提供
我们现在需要将SqlSessionFactory对象作为第三方bean交给spring管理,进而我们可以替代掉mybatis的著配置文件。这里我们使用实例工厂来创建SqlSessionFactory对象