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

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

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

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

感激涕零...

5970 次点击
所在节点    Java
33 条回复
tonyli
2018-03-01 19:07:18 +08:00
小弟,不才之前,也被困惑许久,我自己有总结出一个可行方式。
https://github.com/Linda-Tan/spring-boot/blob/master/src/main/java/com/junliang/spring/config/JpaConfig.java
beginor
2018-03-01 19:36:51 +08:00
读写分离难道不应该在数据库层面做么?
CoderGeek
2018-03-01 19:51:07 +08:00
首先读写分离最好用数据层面 可以看看 三方一类提供的 读写分离 mysql 介绍
还有如果是单纯的切换数据源 用 springboot 尝试过 网上有很多例子
CoderGeek
2018-03-01 19:51:20 +08:00
数据库层面
wmhack
2018-03-01 19:53:44 +08:00
jpa,后期维护,你会想哭
tonyli
2018-03-01 19:58:41 +08:00
@CoderGeek 你自己测试一下看看有一个能用的?
tonyli
2018-03-01 20:00:22 +08:00
@wmhack 没哭呀。
tonyli
2018-03-01 20:01:48 +08:00
有人知道怎么删除评论吗😂
EmdeBoas
2018-03-01 20:06:51 +08:00
@tonyli V 站对自己言论负责,发了就不能删
reid2017
2018-03-01 20:24:36 +08:00
@CoderGeek
@beginor
想尝试自己用代码实现,一般的数据库中间件应该都是用代码实现的
unlimitedsola
2018-03-01 20:30:03 +08:00
@reid2017 数据库也是用代码实现的,不如你尝试自己用代码实现一个吧
reid2017
2018-03-01 20:32:34 +08:00
@tonyli 看了你的代码,有点茅塞顿开的感觉,你的 JpaConfig 里注入了 routingDataSource,我是对应两个 dataSource ( write / read ) 分别写了两个 JpaConfig,分别注入两个 dataSource,明天试下你的方式看下行不行。
letitbesqzr
2018-03-01 21:17:04 +08:00
@wmhack #5 面对企业级应用动则上千张表,不用 jpa 你会想哭。
wojfsdj
2018-03-01 22:19:09 +08:00
@letitbesqzr 请教一下,用 spring data jpa 复杂的关联关系查找你们是用什么方式做的呢? 写 HQL 还是用 Criterion 之类呢?
letitbesqzr
2018-03-01 22:26:05 +08:00
@wojfsdj #14 很少去写 hql,Criteria 用的比较多,然后就是 querydsl 了,报表之类的几乎都是 querydsl 来做,很少遇见写不出来的函数。调点数据库的聚合函数也轻轻松松。
wojfsdj
2018-03-01 22:31:06 +08:00
@letitbesqzr 非常感谢,querydsl 了解得比较少。最近做报表之类的,每个查询都要关联几个表,过滤条件也不少,让人比较头疼。 而且查询出来的数据字段又不同,不同的表不同的字段,也不知道是封装成对象好还是自己用 Map 组装再给前端比较好
tonyli
2018-03-01 23:41:17 +08:00
@reid2017 Ok 的
wmhack
2018-03-02 00:03:27 +08:00
@letitbesqzr jpa 代码侵入了,没有 mybatis 直接写 sql 看着直观,jpa 调试时,日志打印也看不到执行的 sql 语句
ghos
2018-03-02 08:25:45 +08:00
每次看到 jpa 的帖子 总是有人说好有人说不好 争了几年也没有争出所以然来。。。。
letitbesqzr
2018-03-02 08:53:03 +08:00
@wmhack 只能说你不会用,看不到 sql 执行, 你当大家都是傻的? 让连接池输出执行的 sql 和参数不行?

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

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

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

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

© 2021 V2EX