首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何动态管理多个数据源

如何动态管理多个数据源
EN

Stack Overflow用户
提问于 2011-05-24 11:16:18
回答 1查看 2.2K关注 0票数 3

类似的主题也曾在其他线程中讨论过,但我无法找到解决问题的最终解决方案。

我们想要实现的是设计一个能够:

  1. 在启动时读取数据源配置(一个包含多个数据源定义的XML文件,该文件位于WAR文件之外,而不是应用程序上下文或hibernate配置文件)
  2. 为每个数据源创建一个会话工厂(考虑到每个数据源是一个具有不同模式的数据库)
  3. 在运行时根据用户输入切换到不同的数据源(用户可以选择要使用的数据源)
  4. 提供正确的dao对象来管理用户请求。

目前,我们有一个DAO Manager对象,它能够读取数据源配置文件并实例化多个会话工厂,并将它们保存在映射中。每个会话工厂都使用包含适当hibernate映射类的配置创建(每个数据库模式不同)。此外,我们有多个DAO接口及其实现,用于访问“他们的数据库”。

此时,我们需要一种从DAO Manager获取特定DAO对象的方法,该对象包含附加的正确的会话工厂,所有这些都是基于用户请求(基本上是来自上面包含数据源id或自定义数据源对象的服务的调用)。

理想情况下,服务层应该使用DAO Manager基于数据源id (例如)获取DAO对象,而不必担心它的实际实现: DAO管理器将根据数据源id创建正确的DAO对象并在其中注入正确的会话工厂,从而处理它。

我的问题是:

interface?

  • Once application-context.xml?

  • Would是一个很好的方法吗?

  • 如何使用为每个创建会话工厂的DAO管理器多个DAO实现动态注入,是否有一种方法可以让处理它们,就像我通常在application-context.xml?
    • Would中进行依赖注入一样,第二级缓存对于每个会话工厂仍然有效吗?
EN

回答 1

Stack Overflow用户

发布于 2011-05-24 12:53:05

,这是一种很好的方法吗?

这可能是唯一可行的方法。所以,是的。

如何使用Spring为每个DAO接口动态注入DAO管理器的多个DAO实现?

动态的?我以为你想在启动的时候做。如果是这样,只需为访问器提供一个列表或数组:

代码语言:javascript
复制
public void setMyDaos(List<Mydao> daos){
     this.daos = daos;
}

一旦创建了会话工厂,是否有一种方法可以让Spring处理它们,就像我通常在应用程序context.xml中进行依赖注入一样?

这个很难对付。我想你可能得把你的sessionFactory豆存储在scope=session

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6109554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档