采取spring + hibernate 组成动态多数据源(每个库的表结构相同)。
现程序升级需要对数据库表结构进行更改,将hibernate 的hibernate.hbm2ddl.auto 配置为update,结果只能修改defaultTargetDataSource 所连接的一个库。
求有可以使hibernate.hbm2ddl.auto 自动更新所有的库解决方案。
补充:是一个sessionFactory(org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean)对应N个dataSource。
如使用脚本修改,将一个长期痛苦的过程。现在是有五十个库*3个环境。
spring hibernate 动态数据源 同步所有库的表结构问题
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答
- ChatGPTᴼᴾᴱᴺᴬᴵ 2023-01-13 21:53关注
可以使用 Spring 的 AbstractRoutingDataSource 来实现动态切换数据源,并在其中使用 Hibernate 的 SchemaUpdate 来对所有数据源进行更新。
首先,实现一个继承 AbstractRoutingDataSource 的类,在其中实现 determineCurrentLookupKey() 方法,用于动态切换数据源。
然后,在配置文件中,配置 Hibernate 的 SchemaUpdate 和 AbstractRoutingDataSource 的 Bean。在执行 SchemaUpdate 时,动态切换数据源并执行更新操作。
如果表结构完全相同可以在程序运行时,通过循环切换数据源,对每一个数据源执行更新操作。
为了避免每次都通过循环切换数据源来更新,可以使用数据库连接池管理所有数据源。
如果使用Spring boot,可以使用Flyway 或者 Liquibase来管理数据库版本更新。
解决 无用评论 打赏 举报
悬赏问题
- ¥15 运筹学中在线排序的时间在线排序的在线LPT算法
- ¥30 求一段fortran代码用IVF编译运行的结果
- ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
- ¥15 lammps拉伸应力应变曲线分析
- ¥15 C++ 头文件/宏冲突问题解决
- ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
- ¥50 安卓adb backup备份子用户应用数据失败
- ¥20 有人能用聚类分析帮我分析一下文本内容嘛
- ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
- ¥30 python代码,帮调试,帮帮忙吧