繁体   English   中英

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

[英]How to use Spring to manage connection to multiple databases

我读过其他主题,但没有找到一个清晰明确的答案

我正在尝试开发一个能够执行以下操作的网络应用程序:

1)在单独的UI数据库中记录/跟踪用户事件,该数据库通过休眠方式与相同的数据库架构进行连接(也许将connectionString保存到不同的oracle数据库中)

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

3)提供带有用户名和密码的正确数据源(从何处获取此敏感数据?我不会将其存储在应用程序中的某个位置)

我对Spring框架还很陌生。 我发现此链接可能是第一个线索。

有什么建议么?

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

基础设施

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

例:

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

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


<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
    version="1.0">
    <persistence-unit name="Database1">     
        <exclude-unlisted-classes />                    
        <properties>
        </properties>
    </persistence-unit>

    <persistence-unit name="Database2">     
        <exclude-unlisted-classes />                    
        <properties>
        </properties>
    </persistence-unit>
</persistence>

您在帖子中提到的链接如下:

1)创建指向不同架构的不同数据源。

2)扩展AbstractRoutingDataSource并创建您自己的数据源,重写defineCurrentLookupKey方法,该方法将提供键的值。 在您的情况下,它将返回用户从UI中选择的任何内容。 还可以在自定义数据源的bean定义中,将所有数据源作为映射传递给UI,并提供键作为选项。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM