提问人:rooot 提问时间:11/1/2023 更新时间:11/1/2023 访问量:41
如何避免Mybatis为每个'SqlSessionTemplate'重新加载配置?
How can I avoid Mybatis reloading configuration for every `SqlSessionTemplate`?
问:
最近我注意到我的项目需要相当长的时间来初始化与 Mybatis 相关的 bean 和类。我的数据库有几十个分片,并且有一个包装器将查询路由到分片。经过一番研究,我发现在包装器内部,每个分片都有一个单独的分片,每次创建和初始化时,它都会加载 Mybatis 配置和映射器。每次加载只需不到一秒钟,但总和为几十秒。SqlSessionTemplate
由于除了数据源之外,所有会话模板都完全相同,因此我不希望每次初始化会话模板时都进行加载。因此,我将 Mybatis 配置注册为 bean 并将其注入到每个 bean 中,如下所示:SqlSessionFactoryBean
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(dataSource);
sqlSessionFactoryBean.setConfiguration(configuration);
但是所有 sql 会话最终都共享相同的数据源,因为数据源存储在 中,其单例 Bean 在所有 s 之间共享。Configuration
SqlSessionFactoryBean
我搜索了一种在不重新加载所有配置的情况下克隆对象的方法,但找不到任何配置。Configuration
如果你知道如何在不每次都重新加载 Mybatis 配置和映射器的情况下实例化几个 s,无论是重用还是,请告诉我。SqlSessionTemplate
Configuration
SqlSessionFactoryBean
版本: Spring 4.3, Mybatis 3.4, Mybatis-spring 1.3
答: 暂无答案
评论
AbstractRoutingDataSource
?也可以使用 MyBatis 拦截器切换目录/模式。