簡體   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