2012-12-03 48 views
1

如果您查看下面的鏈接,您可以非常清楚地看到如何在代碼中定義您的數據源和實體管理器工廠,這些代碼在配置期間運行。運行時配置動態數據源配置Spring MVC

http://static.springsource.org/spring-data/data-jpa/docs/current/reference/html/#d0e993

我想知道的是,如果有初始化後這樣做的呢?我想動態地創建數據源到sqlite文件,用戶將上傳提取信息並將其放入服務器上的MySQL數據庫。我使用hibernate和jpa來實現持久化和orm,並且使用Spring存儲庫來訪問所有數據庫。我知道我可以使用jdbc並使用查詢訪問sqlite以外的信息,但是我已經有很多代碼能夠複製這些數據,因此不必編寫所有這些查詢並重寫碼。

我可以使用我在迭代之間進行迭代的文件池,以便我可以用上載的文件替換那些sqlite文件並訪問那些預定義的文件,但這不是很理想。我寧願能夠上傳文件,將其聲明爲新的sqlite數據源,然後將其提供給我的抽象路由數據源,以便我可以在我的數據源之間切換。

現在我正在定義我的數據源在xml中,我只是使用我的抽象路由數據源在它們之間切換。

回答

0

我會嘗試在包裝中注入EntityManagerFactory實例,並讓所有需要EntityManager的代碼調用此包裝。包裝器還將提供一個可以接受由所有參數構造的SQLite文件或DataSource的方法,通過反射設置EntityManagerFactory實例的數據源。因此,來自此EntityManagerFactory的後續EntityManager實例將使用相同的持久性單元,但針對新的SQLite數據源。