首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

2010.01.05——spring配备两个数据源

2012-10-26 
2010.01.05——spring配置两个数据源2010.01.05——spring配置两个数据源请参考:http://www.iteye.com/topic/7

2010.01.05——spring配置两个数据源
2010.01.05——spring配置两个数据源
请参考:http://www.iteye.com/topic/78432

因为系统需要,有多个表空间,所以要给spring配置多个数据源,我们是spring+hibernate的系统,估计

spring配置文件如下:


后面sessionFactory和transactionManager的配置还是一样的

然后测试
这个原因一直我也不是很明白,云里雾里的。。。。
上面那个BeforeAdvice还是有点问题,如果我的dao层方法很多呐,总不能全是if语句吧,所以,做了一下改


首先看spring.xml


使用SystemJdbcTemplate和VedorJdbcTemplate就可以用不同的数据源
9 楼 lipeng88213 2010-01-11   niyong 写道呵呵,你这样做太麻烦了,其实很简单的
您有更好的办法吗 呵呵 请教一下 10 楼 wuhoufeng 2010-01-12   这种方式如果连接的是2个数据库时,要考虑用全局事务管理,不然有隐患的。先回再看 11 楼 329087553 2010-01-13   wuhoufeng 写道这种方式如果连接的是2个数据库时,要考虑用全局事务管理,不然有隐患的。先回再看
我也考虑过这个问题,但是如果 只是从一个数据库查数据,然后到另一个数据库里插入和更新 就没什么问题。。如果真要把两个数据的操作放到一个事物里,我真还没想到好的办法,希望朋友能指点下! 12 楼 skzr.org 2010-01-14   通过schema访问:
1 你的不同位置指的是其他用户的表吧!首先grant此表需要的权限给你的用户
2 在hbm文件配置schemal <hibernate-mapping schema="ownerOfTable">
虽然登录的是otherUser但是
生成的sql是select ... from ownerOfTable.table where ...
第二种办法可以建立同义词:
oracle的同义词 就是一种映射关系
同义词拥有如下好处:节省大量的数据库空间,对不同用户的操作同一张表没有多少差别;扩展的数据库的使用范围,能够在不同的数据库用户之间实现无缝交互;同义词可以创建在不同一个数据库服务器上,通过网络实现连接。

呵呵,oracle里面还有datalink可以解决数据库实例在不同物理机上的问题!
good luck! ^ ^ 13 楼 merman13 2010-01-20   要处理两个事物太麻烦,我这边量表多个数据库和表一般都采用JDBC的来连接 14 楼 xprayc 2010-01-23   最后发现,当我把implements YuliangService去掉时,它就可以测试了没有错误了,这个问题一直很郁闷,

不知道原因,后来发现当我把spring.xml里面的事务去掉后,就可以正常运行了,

=》
这里应该是aop拦截顺序的问题。

按照lz现在的配置。会先由txAdvice拦截,startTransaction,而在startTransaction的方法实现中,已经会取得相应的数据源,获取一个连接,保存在holder中。此后执行的sql都是在这个conn中进行的。

在此之后才会执行楼主的aspect,更换CustomerContextHolder中存放的值,可是这时已经晚了,数据库连接在之前已经获取了?


解决方案也很简单。
通过为txAdvice和你的advisor指定order应该就ok了。aop-config里面<aop:advisor 是有个order属性的,把你的advisor的order设成1,txadvice的order设成2就能解决问题了。

热点排行