java - Hibernate + Spring 使用多个数据源?

标签 java hibernate spring spring-mvc

我正在开发一个使用 Spring MVC 2.5 和 Hibernate 的 Web 应用程序。

应用程序的一个要求是它必须能够将一些对象导出到外部数据库。我想我不妨使用我现有的数据层并将对象保存到外部源。

我是 Spring 和 Hibernate 的新手,我想我只是想知道我应该如何处理这个问题。现在一切都通过注释自动连接起来。我猜我必须创建一个新的 dataSource bean、一个新的 sessionFactory 和一个 transactionManager...也许...但是...

  1. 我只希望在用户专门“导出”时可以连接到外部数据源。

  2. Autowiring 会妨碍我吗?当我为导出过程实例化 DAO 时,如何告诉 Spring 注入(inject)适当的 sessionFactory? (我通过构造函数 Autowiring )我是否应该以编程方式创建我的 session 工厂(等),然后手动实例化我的 DAO?如果是这样,这会“覆盖” Autowiring 注释吗?

如果有人可以引导我完成使此类工作正常工作的基本过程,我想我不需要特别回答上述问题。谢谢!

最佳答案

幸运的是,Spring 已经为此提供了解决方案:AbstractRoutingDataSource。它基本上充当多个 DataSource 的 Facade,并允许您对其进行子类化并实现您需要决定应该使用哪个 DataSource 的任何逻辑。一些细节在这里:

http://blog.springsource.com/2007/01/23/dynamic-datasource-routing/

这允许您在一个地方处理您的数据源查找逻辑。你的 DAO 层和 SessionFactory 不需要调整,只是你需要将 AbstractRoutingDataSource 的子类注入(inject) Hibernate SessionFactory。

关于java - Hibernate + Spring 使用多个数据源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/860918/

相关文章:

java - 使用 RabbitMq MessageListenerContainer 的 Reactor Flux 超时

java - 在具有无效返回类型的函数中返回String数组

java - 如何使用 hibernate/jpa 注释将一个类映射到不同的表

java - 是否可以仅对 Runnable 进行沙箱处理

java - 如何使用hibernate更新数据库?

java - 如何根据实体接口(interface)声明存储库?

java - 制作主键列 varchar(max) 的替代方法

java - 如何在 Spring 中将 JdbcTemplate 转换为 Flux?

java - 如何刷新 fragment 'onResume?'

java - JDialog 大小未渲染