有熟悉 spring-data-jpa 的大牛吗?

2018-03-01 17:04:06 +08:00
 reid2017

spring-data-jpa,如何实现多数据源动态切换实现读写分离,网上的教程都看遍了,都不行,debug 跟踪了三天都没找到在哪里切换数据源。

有没有大牛可以分享下实现代码?

感激涕零...

6186 次点击
所在节点    Java
33 条回复
aias
2018-03-02 09:14:12 +08:00
@wmhack 可以看到。但是在这里 jpa 调优会很恶心
zhouyou457
2018-03-02 09:34:45 +08:00
jpa 和 mybatis 的问题业界都吵了多久了....哪个用着顺手就行了嘛..

另外,AbstractRoutingDataSource 了解一下
reid2017
2018-03-02 09:47:46 +08:00
@zhouyou457 用的就是 AbstractRoutingDataSource,不知道是否用得不对
wmhack
2018-03-02 11:20:01 +08:00
@letitbesqzr 好吧,我只是说说自己的观点。
reid2017
2018-03-02 11:30:38 +08:00
@tonyli 还是不行,你的使用了 MyBatis,把 routingDataSource 注入到 SqlSessionFactory,我没有使用 MyBatis,只用 sping-data-jpa
zhouyou457
2018-03-02 11:57:04 +08:00
try {
String datasourceName = getAnnotationDatasource(proceedingJoinPoint);
if (datasourceName != null) {
DataSourceContextHolder.setDataSourceType(datasourceName);
}
return proceedingJoinPoint.proceed();
} finally {
DataSourceContextHolder.clearDataSourceType();
}

大致就是这样...
getAnnotationDatasource 是用切片配合注解获取需要切换到的数据源
reid2017
2018-03-02 16:59:47 +08:00
@zhouyou457 大致是这样写的,都不行。每次都路由到我配置的 slave 数据源,而不是 master 数据源
tonyli
2018-03-03 00:52:16 +08:00
@reid2017 我二者结合了,就用 jpa 也是可以的呀
tonyli
2018-03-03 00:55:11 +08:00
@reid2017 众口难调,我写的 demo 直接结合二者,想用哪个都可以😄
ourslay
2018-03-03 22:44:35 +08:00
chinadeng
2018-03-04 22:05:20 +08:00
@letitbesqzr 用 querydsl,你们大概多少张表关联查询?
reid2017
2018-03-05 17:09:17 +08:00
@tonyli 你是把 routingDataSource 注入到了 mybatis 的 sqlSessionFactory 里了,你如果不用 mybatis,是把它注入到哪里? JPA 的 EntityManager 吗?这样问题又来了,有两个 dataSource,就需要两个 EntityManager,那 routing 应该注入到哪一个?
reid2017
2018-03-06 15:07:44 +08:00
@tonyli 用 mybatis 轻松实现两个数据源动态切换读写分离,用 jpa 就还是没头绪。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/433973

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX