问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

spring使用Hibernate配置双数据源事务问题怎么解决

发布网友 发布时间:2022-04-11 10:50

我来回答

2个回答

懂视网 时间:2022-04-11 15:12

第二个

import com.zaxxer.hikari.HikariDataSource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;

import javax.sql.DataSource;

/**
 * @author PangG
 * @MapperScan 扫描mapper所在路径
 */
@Configuration
@MapperScan(basePackages = "mapper.sqlserver", sqlSessionFactoryRef = "sqlserverSqlSessionFactory")
public class SqlserverDataSourceConfig {

 /**
 * @Bean 注册Bean对象
 * @Primary 表示默认数据源
 * @ConfigurationProperties 读取properties中的配置参数映射成为一个对象
 */
 @Bean(name = "sqlserverDataSource")
 @Primary
 @ConfigurationProperties(prefix = "spring.datasource.primary")
 public HikariDataSource getSqlserverDateSource() {
 return new HikariDataSource();
 }

 /**
 * @param datasource 数据源
 * @return SqlSessionFactory
 * @Primary 默认SqlSessionFactory
 */
 @Bean(name = "sqlserverSqlSessionFactory")
 @Primary
 public SqlSessionFactory sqlserverSqlSessionFactory(@Qualifier("sqlserverDataSource") DataSource datasource) throws Exception {
 SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
 bean.setDataSource(datasource);
 //mybatis扫描xml所在位置
 bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:mapper/sqlserver/*.xml"));
 return bean.getObject();
 }

 @Bean("sqlserverSessionTemplate")
 @Primary
 public SqlSessionTemplate sqlserverSqlSessionTemplate(@Qualifier("sqlserverSqlSessionFactory") SqlSessionFactory sqlSessionFactory) {
 return new SqlSessionTemplate(sqlSessionFactory);
 }
}

注意配置类配置了扫描路径一定要关闭配置文件中的的扫描

#mybatis.mapper-locations=classpath:mapper//.xml

 来源:锌闻网

数据库双数据源配置

标签:name   一个   UNC   zone   rtt   perl   content   public   ack   

热心网友 时间:2022-04-11 12:20

在SpringSide 3 中,白衣提供的预先配置好的环境非常有利于用户进行快速开发,但是同时也会为扩展带来一些困难。最直接的例子就是关于在项目中使用多个数据源的问题,似乎 很难搞。在上一篇中,我探讨了SpringSide 3 中的数据访问层,在这一篇中,我立志要解决多数据源配置的难题,我的思路是这样的:

第一步、测试能否配置多个DataSource
第二步、测试能否配置多个SessionFactory
第三步、测试能否配置多个TransactionManager
第四步、测试能否使用多个TransactionManager,也就是看能否配置多个

基本上到第四步就应该走不通了,因为Spring中似乎不能配置多个,而且@transactional注解也无法让用户选择具体使用哪个TransactionManager。也就是说,在SpringSide的应用中,不能让不同的数据源分别属于不同的事务管理器,多数据源只能使用分布式事务管理器,那么测试思路继续如下进行:

第五步、测试能否配置JTATransactionManager

如果到这一步,项目还能顺利在Tomcat中运行的话,我们就算大功告成了。但我总认为事情不会那么顺利,我总觉得JTATransactionManager需要应用服务器的支持,而且需要和JNDI配合使用,具体是不是这样,那只有等测试后才知道。如果被我不幸言中,那么进行下一步:

第六步、更换Tomcat为GlassFish,更换JDBC的DataSource为JNDI查找的DataSource,然后配置JTATransactionManager

下面测试开始,先假设场景,还是继续用上一篇中提到的简单的文章发布系统,假设该系统运行一段时间后非常火爆,单靠一台服务器已经无法支持巨大的用户数, 这时候,站长想到了把数据进行水平划分,于是,需要建立一个索引数据库,该索引数据库需保存每一篇文章的Subject及其内容所在的Web服务器,而每 一个Web服务器上运行的项目,需要同时访问索引数据库和内容数据库。所以,需要创建索引数据库,如下:

[java] view plain copy print?
create database puretext_index;

use puretext_index;

create table articles(
id int primary key auto_increment,
subject varchar(256),
webserver varchar(30)
);
create database puretext_index;

use puretext_index;

create table articles(
id int primary key auto_increment,
subject varchar(256),
webserver varchar(30)
);
第一步测试,配置多个DataSource,配置文件如下:
application.properties
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
求CAD标注的数字太小看不到尺寸大小的解决方法 马蹄椰汁千层糕做法 cad标注数字太小怎么调节cad标注时字体箭头太小怎么办 我在江川金融贷款10000万,银行卡异常,交1300可以撤单,是骗人的吗... 房屋鉴定费一般需要多少钱 寺庙扩建需要交保证金吗 脚趾甲被踩后有淤血,现在好像有点化脓怎么办? 脚趾甲打球的时候被踩的大面积淤血,如何能快速好,谢谢 模特培训学校招生有招生要求吗 模特学校招生要求是什么 平面模特培训学校费用 骑马与砍杀怎么修改属性,导出来怎么找不到导入文件 求骑马与砍杀的所有修改方法? 我的骑马与砍杀没有那个修改人物的文件啊? 骑马与砍杀怎么修改文件(修改后能够直接招降领主) 骑马与砍杀的修改文件 骑马与砍杀npc属性修改 详细步骤及解析 去吧皮卡丘红包系统详解 小红包怎么玩 意大利面套餐中有哪些吃的 怎么用肉酱做意大利面 意大利番茄肉酱意面怎么做? vlog文件命名格式,是什么 外汇期货开盘时间是什么时候;外汇期货开盘是不是24小时交易的? 现在有很多的投资品种,外汇.期货.股票等,他们那款品种不休息的,而且24个小时交易 视频播放器播出的视频如何重命名 美人迟暮啥意思 美人迟暮为什么比英雄末路更令人扼惋 “美人白头 英雄迟暮”出自什么? 形容女子显老的成语有哪些? Photoshop中如何把两个图片拼在一起,Photoshop中的快捷键有哪些 形容美人迟暮的诗句 求搞笑的QQ个性签名~!多谢啦~! 大海在头顶有什么神秘之处? 我读了海洋神秘之处要写读后感是怎么写的 250g哑粉纸可以用喷墨打印机打印么?非要用激光打印机么?? 结婚请柬里面粉红色纸上的字怎么打上去的,如何排版? 激光打印机可以打印100克哑粉纸吗 我想用word打印出白颜色的字来 应如何设置,纸张我放的是A4粉红色纸,直接把字改成白色打印,打不出来东西 复印A4粉红纸一张成本是多少 腾讯怎样判断我的电脑上是否安装360?? 如何在电脑上安装360安全卫士 如何确认已被安装360扣扣保镖 腾迅是如何确认是否安装360的? 如何确认我的360杀毒软件正在使用? 360安全装机怎么用? 腾讯如何检测出 以安装360 如何才能正确输入360杀毒软件的激活码 怎么在360手机助手里确认连接电脑 为什么安全卫士安装后打开老提示检测到已安装360安全卫士,您确定要继续覆盖安装吗? 360卫士中软件安装需要自己手动确认的,不能自动安装在哪里设置 安装360杀毒软件后提示找不到文件,确认文件名是否正确是什么原因