失败回滚项目变成子模块

失败回滚项目变成子模块,第1张

在方法中,使用了hana数据源从hana数据库中查出数据,然后将数据写到mysql数据库中,对数据库进行修改 *** 作时,我们一般会添加事务回滚的 *** 作,以便程序出错时可以还原数据库。

问题:

在方法中添加能使程序异常的代码(比如:int i = 1/0;)进行测试,并在方法中贴上以下注解:

@Transactional(rollbackFor = Exceptionclass)

复制

但是发现事务并没有回滚

检查了项目的配置, 两个数据源配置了事务管理器

hana数据源配置:

import javaxsqlDataSource;

import combaomidoumybatisplusspringMybatisSqlSessionFactoryBean;

import orgapacheibatissessionSqlSessionFactory;

import orgmybatisspringSqlSessionTemplate;

import orgmybatisspringannotationMapperScan;

import orgspringframeworkbeansfactoryannotationQualifier;

import orgspringframeworkbootjdbcDataSourceBuilder;

import orgspringframeworkcontextannotationBean;

import orgspringframeworkcontextannotationConfiguration;

import orgspringframeworkcontextannotationPrimary;

import orgspringframeworkcoreiosupportPathMatchingResourcePatternResolver;

import orgspringframeworkjdbcdatasourceDataSourceTransactionManager;

import topibase4jcoreConstants;

import topibase4jcoreutilPropertiesUtil;

import topibase4jcoreutilSecurityUtil;

@Configuration

@MapperScan(basePackages = "comxxxmapperhana",sqlSessionTemplateRef ="hanaSqlSessionTemplate")

public class HanaDataSourceConfig {

/创建数据源/

@Bean(name = "hanaDataSource")

@Primary

public DataSource gethanaDataSource() {

DataSource build = DataSourceBuildercreate()

driverClassName(PropertiesUtilgetString("hanadriverClassName"))

url(PropertiesUtilgetString("hanaurl"))

username(PropertiesUtilgetString("hanausername"))

password(SecurityUtildecryptDes(PropertiesUtilgetString("hanapassword"), ConstantsDB_KEYgetBytes()))

build();

return build;

}

@Bean(name = "hanaSqlSessionFactory")

@Primary

public SqlSessionFactory hanaSqlSessionFactory(@Qualifier("hanaDataSource") DataSource dataSource) throws Exception {

MybatisSqlSessionFactoryBean bean = new MybatisSqlSessionFactoryBean();

beansetDataSource(dataSource);

//设置mapper配置文件

beansetMapperLocations(new PathMatchingResourcePatternResolver()getResources("classpath:mapper/hana/xml"));

return beangetObject();

}

/创建事务管理器/

@Bean("hanaTransactionManger")

@Primary

public DataSourceTransactionManager hanaTransactionManger(@Qualifier("hanaDataSource") DataSource dataSource){

return new DataSourceTransactionManager(dataSource);

}

/创建SqlSessionTemplate/

@Bean(name = "hanaSqlSessionTemplate")

@Primary

public SqlSessionTemplate hanaSqlSessionTemplate(@Qualifier("hanaSqlSessionFactory") SqlSessionFactory sqlSessionFactory){

return new SqlSessionTemplate(sqlSessionFactory);

}

}

复制

mysql数据源配置:

import combaomidoumybatisplusspringMybatisSqlSessionFactoryBean;

import orgapacheibatispluginInterceptor;

import orgapacheibatissessionSqlSessionFactory;

import orgmybatisspringSqlSessionTemplate;

import orgmybatisspringannotationMapperScan;

import orgspringframeworkbeansfactoryannotationQualifier;

import orgspringframeworkbootjdbcDataSourceBuilder;

import orgspringframeworkcontextannotationBean;

import orgspringframeworkcontextannotationConfiguration;

import orgspringframeworkcontextannotationEnableAspectJAutoProxy;

import orgspringframeworkcoreiosupportPathMatchingResourcePatternResolver;

import orgspringframeworkjdbcdatasourceDataSourceTransactionManager;

import orgspringframeworktransactionannotationEnableTransactionManagement;

import topibase4jcoreutilPropertiesUtil;

import javaxannotationResource;

import javaxsqlDataSource;

@Configuration

@MapperScan(basePackages = "comxxxmappermysql",sqlSessionTemplateRef ="mysqlSqlSessionTemplate")

public class MysqlDataSourceConfig {

@Resource

private MybatisPlusConfig mybatisPlusConfig;

/创建数据源/

@Bean(name = "mysqlDataSource")

public DataSource getmysqlDataSource() {

DataSource build = DataSourceBuildercreate()

driverClassName(PropertiesUtilgetString("druiddefaultdriverClassName"))

url(PropertiesUtilgetString("druidwriterdefaulturl"))

username(PropertiesUtilgetString("druidwriterdefaultusername"))

password(PropertiesUtilgetString("druidwriterdefaultpassword"))

build();

return build;

}

@Bean(name = "mysqlSqlSessionFactory")

public SqlSessionFactory mysqlSqlSessionFactory(@Qualifier("mysqlDataSource") DataSource dataSource) throws Exception {

MybatisSqlSessionFactoryBean bean = new MybatisSqlSessionFactoryBean();

beansetDataSource(dataSource);

//设置mapper配置文件

beansetMapperLocations(new PathMatchingResourcePatternResolver()getResources("classpath:mapper/mysql/xml"));

Interceptor[] interceptors = {

mybatisPlusConfigpaginationInterceptor(),

mybatisPlusConfigperformanceSonInterceptor()

};

beansetPlugins(interceptors);

return beangetObject();

}

/创建事务管理器/

@Bean("mysqlTransactionManger")

public DataSourceTransactionManager mysqlTransactionManger(@Qualifier("mysqlDataSource") DataSource dataSource){

return new DataSourceTransactionManager(dataSource);

}

/创建SqlSessionTemplate/

@Bean(name = "mysqlSqlSessionTemplate")

public SqlSessionTemplate mysqlSqlSessionTemplate(@Qualifier("mysqlSqlSessionFactory") SqlSessionFactory sqlSessionFactory){

return new SqlSessionTemplate(sqlSessionFactory);

}

}

复制

由于默认的数据源是hana数据源,但是现在我们要将mysql的事务进行回滚,如果不将默认的事务管理器设置mysql对应的事务管理器为默认的话, 事务回滚将不起作用。

因此,可以添加配置类,以配置默认的事务管理器为mysql的,配置类要实现TransactionManagementConfigurer

/

将mysql数据源的事务管理器设置为默认的事务

/

@Configuration

public class SpecifyDefaultTransactionManagerConfig implements TransactionManagementConfigurer {

@Autowired

private MysqlDataSourceConfig mysqlDataSourceConfig;

@Override

public PlatformTransactionManager annotationDrivenTransactionManager() {

return mysqlDataSourceConfigmysqlTransactionManger(mysqlDataSourceConfiggetmysqlDataSource());

}

复制

再次进行测试,事务将回滚成功

如果不想添加配置类,可以在注解中标明使用的是哪个事务管理器

这里我们要用的是mysql的,因此可以这样配置

@Transactional(value = "mysqlTransactionManger",rollbackFor = Exceptionclass)

复制

value的值就是事务管理器bean的名称

spring boot

三星电视

精选推荐

广告

springboot多数据源即分布式事务解决方案

79下载·0评论

2018年10月16日

SSM多数据源配置事务回滚处理

2777阅读·0评论·1点赞

2019年1月15日

MySQL 多库事务回滚

284阅读·0评论·0点赞

2022年10月23日

Spring Boot多数据源(支持Spring声明式事务切换和回滚)pdf

10下载·0评论

2021年7月21日

Spring 事务

165阅读·0评论·0点赞

2020年4月14日

java多数据源回滚_Spring多数据源事务

1053阅读·0评论·0点赞

2021年3月10日

Springboot多数据源 解决事务回滚失效

3004阅读·6评论·2点赞

2021年8月6日

springboot 多数据源 添加事务,事务回滚

1125阅读·4评论·0点赞

2021年12月1日

dynamic-datasource多数据源的配置使用(读写分离、事务的回滚)

4146阅读·3评论·4点赞

2022年1月26日

Spring Boot项目多数据源事务不生效的问题

2641阅读·0评论·8点赞

2021年10月15日

Springboot集成SpringJDBC多数据源事务回滚(二)

SAP HANA 是一个功能强大的内存平台,旨在为你交付前所未有的洞察。借助该平台,你的所有问题都将迎刃而解。

重新构建业务模式:简化业务协作,实现人员、设备和业务网络的实时互联

重新定义业务决策:随时随地实时洞察任何数据,加速产生业务影响

重新构想业务流程:实时掌控关键任务,灵活、快速地调整业务

重新打造用户体验:通过任意设备获取简单、个性化的用户体验,轻松完成所有业务线中的工作

顾家家居床垫用HANA数据系统。

顾家家居内部涉及到20多个不同的业务系统,信息技术部门正在整合多个业务系统的数据建设以HANA数据库为数据中心,完成企业内部的数据整合和统一处理。

SAP HANA内存计算引擎为内存计算提供了各种算法。它为开发在SAP HANA上运行的应用程序的开发人员和客户提供了多个应用程序库,这些库动态链接到SAP HANA数据库内核。目前Accrets在新加坡的多个三级数据中心拥有并运营私有云IT基础设施,这些数据中心为多个国际电信运营商提供最密集的连接,为与公共云提供商的安全混合连接提供Cloud Exchange结构访问,在管理用户的IT环境时,采用ITIL(信息技术基础设施库),应用最佳的IT服务管理程序支持用户的需求。 还有不清楚的可以自己百度。

1、传统数据库可以运行在传统设备上,但HANA数据库必须使用HANA认证机型;

2、传统数据库取数时从存储中取,HANA数据库从内存中读取数据,从这个角度上说HANA快些;

3、使用传统数据库ECC用啥版本都行,HANA必须ERP60+EHP7以上;

4、按SAP的说法在HANA上的财务模块,有些版本减少了一些冗余的中间表,但存在和原来同构的视图,所以迁移后不影响自开发的程序的运行。

帮助客户制定HANA计划的咨询顾问与分析师承认其中的复杂性,他们认为HANA分析型应用将最终走进企业混合ERP环境

也许短期大规模BusinessSuite向HANA的迁移不会出现,但这是一个非常重大的变革,SAP用户必须重新评估他们的企业系统

埃森哲公司的SAP分析与HANA部门全球主管NicolaMoriniBianzino表示:“客户向HANA迁移的方式是小步走,大多数的SAP客户都在进行评估,他们需要一套系统的方法来决定如何进行迁移,以及是否在云中运行HANA

客户将从小的组件开始向HANA迁移,同时需要保证业务的正常运转

这与迁移到云的形式非常相似,部分业务留在企业内部,部分放到云中

”对于那些市场竞争中处于领先位置的大型企业来说,他们对预测分析的需求是明显的,是HANA的典型客户群

而像公共事业这种行业,他们的迁移步伐会慢一些

当HANA企业云以及相关的选项更成熟,证明迁移更可行的时候,MoriniBianzino期待一些小型公司也能够跟上脚步

相比而言,SAPBWonHANA应用更简单一些,而且成本与风险相对较低

MoriniBianzino表示:“通常BW系统的规模不是很大,所以前期的投入会相对较少

埃森哲在印度的一个制造业客户近期就完成了向HANA的迁移

”另外一些没有准备好对ERP系统进行完全“平台再造”的客户首先会考虑一些批量处理负载,比如财务结算,他们能够从HANA的性能提升上快速获得回报

改写历史一些观察家指出,HANA强袭的一个主要原因是SAP对新的收入流的迫切需求

凯捷公司的HANA咨询顾问MikePrice表示,ERP热潮早已经过去,而为了推广HANA,SAP不得不对其ERP平台进行重新投资,包括核心代码的重写

实在难以想象现在有多少人在为此写代码

SAP声称,基于HANA的BusinessSuite对客户来说将提供无缝的迁移体验,专家对此表示赞同

Forrester著名分析师PaulHamerman称,基于HANA的BusinessSuite并不是另一个版本,它更像是一个增强的功能包

客户通过迁移到HANA的确能够获得非常好的性能提升,比如在财务结算上的测试显示能够提供1000倍以上的性能提升

Hamerman表示:“在HANA的推广方面,SAP一直非常小心,不给客户造成迁移必须‘大动干戈’的印象

这与甲骨文形成鲜明对比

”Hamerman这里指的是Oracle融合应用软件产品线

HANA早期回报体现在接近实时的运行传统的批量处理应用

然而,速度并不是唯一的优势

特别是对于跨国公司来说,他们基本上会统一时间进行基于ERP的批量处理,通常是在夜里

然而由于时差关系,一些地区业务就可能需要暂停

因此这种接近于实时的处理能力会非常具有吸引力

通常说到SAP,指的都是SAPBusinessSuite/R3(ECC)这款产品。

那么SAPS/4HANA与SAPR3究竟有什么不同呢?

简单地说,S/4HANA是下一代的R/3和SAP商务套件SAP。它利用新的用户体验技术(SAPFiori)和内存处理和数据库技术(SAPHANA),以及引入了一个新的引导配置的概念。

因此,它提高了简单,减少了处理时间,并提供比更大的功能在R/3是可用的。S/4hana重点是财务、ERP、CRM,SRM,SCM,PLM,和BW,与财务的组件组成的SAP新近发布的简单财务应用。进一步的功能目前在SAPERP被建造出来的。

SAPR3基于任何的数据库(包括SAPHANA数据库),而SAPS/4HANA是完全基于SAPHANA构建,优化了产品代码及数据结构,简化了财务流程和产品逻辑,并且应用了SAPFiori新的用户交互系统。

以上就是关于失败回滚项目变成子模块全部的内容,包括:失败回滚项目变成子模块、sap hana是属于哪一种数据库技术方案、顾家家居床垫用什么数据系统等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9414263.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存