如何使用Spring来管理与多个数据库的连接

我已经阅读了其他主题,但没有找到一个好的和明确的答案

我正在尝试开发一个能够:

1)在单独的UI数据库中记录/跟踪用户事件,我们通过hibernate与相同的数据库模式连接(可能将connectionString保存到不同的oracle数据库)

2)在运行时,当您登录时,您可以选择一个环境来连接到具有相同模式(但不是相同数据)的三个不同oracle数据库之一

3)使用用户名和密码提供正确的DataSource(从哪里获取这些敏感数据?我不会将其保存在应用程序的某处)

我是Spring框架的新手。 我发现这个链接可能是第一个领导。

有什么建议么?

还使用Spring 3.1或3.2,JDBC查询我的oracle数据库和hibernate映射到我的UI数据库。 这听起来很混乱所以我有一张照片:

基础设施

只需创建不同的DAO,每个DAO都附加一个独立的持久性单元。 在persistence.xml中,您可以拥有多个持久性单元,每个持久性单元都连接到不同的数据库。

例:

public class Dao1{ @PersistenceContext(unitName="Database1") protected EntityManager entityManager; public class Dao2{ @PersistenceContext(unitName="Database2") protected EntityManager entityManager;              

您在post中提到的链接说明如下:

1)创建指向不同模式的不同数据源。

2)扩展AbstractRoutingDataSource并创建自己的数据源,覆盖将提供key值的determineCurrentLookupKey方法。 在您的情况下,它将返回用户从UI中选择的任何内容。 同样在自定义数据源的bean定义中,将所有数据源作为映射传递,并在UI处提供key作为选项。

3)现在将此数据源分配到会话工厂bean中。