spring多数据源+事物管理
来源:互联网 发布:python抓取图片 编辑:程序博客网 时间:2024/06/06 15:43
1、使用了spring的aop思想,实现了动态数据源的切换。
2、spring的事务管理,是基于数据源的,所以如果要实现动态数据源切换,而且在同一个数据源中保证事务是起作用的话,就需要注意二者的顺序问题,即:在事物起作用之前就要把数据源切换回来。
举一个例子:web开发常见是三层结构:controller、service、dao。一般事务都会在service层加的,如果使用spring的声明式事物管理,那么在调用service层代码之前,spring会通过aop的方式动态添加事务控制代码,所以如果要想保证事物是有效的,那么必须spring添加事务之前把数据源动态切换过来,也就是动态切换数据源的aop要至少在service上添加,而且要在spring声明式事物aop之前添加。
最简单的方式是,把动态切换数据源的aop加到controller层,这样在controller层里面就可以确定下来数据源了。不过,这样有一个缺点就是,每一个controller绑定了一个数据源,不灵活。对于这种:一个请求,需要使用两个以上数据源中的数据完成的业务,就无法实现了。
针对上面的这种问题,可以考虑把动态切换数据源的aop放到service层,但要注意一定要在事务aop之前来完成。这样,对于一个需要多个数据源数据的请求,我们只需要在controller里面注入多个service实现即可。但这种做法的问题在于,controller层里面会涉及到一些不必要的业务代码,例如:合并两个数据源中的list...
针对上面的问题,可以再考虑一种方案,就是把事务控制到dao层,然后在service层里面动态切换数据源。
- spring多数据源+事物管理
- spring多数据源+事物管理
- spring 多数据源 事物
- 【DB】【Spring】多数据源事物配置
- Spring JPA 使用EntityManager时如何配置多数据源的事物管理
- Spring多数据源管理
- Spring多数据源管理
- Spring结合hibernate和jdbcTemplate多数据源事物问题
- 多数据源事物处理
- 同一节点多数据源的事物管理(配置多个事物实现)
- Spring JDBC 多数据源管理
- Spring多数据源管理源码分析
- spring 事物控制---多数据源与 atomikos 分布式事务配置(接之前未完成的部分)
- Spring配置多数据源在配置事物后无效完美解决方案
- spring多数据源
- spring 多数据源
- spring 多数据源
- spring多数据源
- 试读《C#高级编程(第9版)》有感
- servlet3.0规范异步请求
- 【SICP练习】5 练习1.9
- 进制转化
- eclipse 一直 android sdk contentloader
- spring多数据源+事物管理
- 将数据类型牢记在❤
- boost.python入门教程 ----python 嵌入c++
- 【方法】输出workflow相关的运行指标到target中
- 支持向量机(SVM)相关免费学习视频集锦
- VARIANT类型 详解
- C语言中调用python
- xfire生成webservice,Android利用ksoap2访问webservice 之 客户端搭建
- Putty连接Galielo Gen2 board出现乱码及不能输入解决方案