2017-08-04 101 views
0

我想在每一個HTTP請求連接到數據庫(在每一個請求,我將獲得來自用戶數據庫的詳細信息)。可有人建議如何使用彈簧引導啓動做-jpa。動態連接到數據庫在Java中(春季啓動)

我無法將屬性文件用於數據庫配置詳細信息。 因爲我會從http請求動態獲取細節。

我使用的是2.0.0.M3的spring啓動版本。

回答

0

我認爲它可能是不恰當的連接用戶的數據庫instantly.I建議做出的接口程序來收集你在一個database.You需要不能改變你的代碼的連接參數的性能數據的動態。

+0

我沒有明白你的意思? –

0

您需要加載彈簧啓動的屬性文件中使用@ConfigurationProperties anotation類。

此外,您還需要調用此類中的數據庫配置api。

+0

你能提供工作代碼! –

2

我建議你更好地使用本機JDBC代碼來連接數據庫並執行查詢。如果您想使用彈簧數據jpa,則必須在運行時爲DataSourceEntityManagerFactoryJpaTransactionManager創建Bean。

+0

項目要求是使用ORM。我不能去與本機jdbc代碼 –

1

如果數據庫的詳細信息會在每個用戶的請求,並且希望在每個HTTP請求連接數據庫,那麼因爲你不會對應用程序啓動時甚至實體管理器工廠沒有數據庫實例是不可取的。但是在這種情況下,你將不得不手動管理所有這些東西。您必須手動爲每個請求創建數據源,事務管理器,實體管理器等實例化和初始化,並將其註冊到Spring IOC容器中,並且在請求完成之後,您必須手動從Spring IOC中刪除(取消註冊)這些實例。你可以爲此創建攔截器。但是沒有人應該這樣做,因爲它太麻煩了,也更加複雜,我們正在爲這個實例化負擔,以便自己消滅豆子。 即使是春天也很好地管理着它,我們正在通過自己負責製造複雜性。

+0

這是項目的要求是否有任何其他方式來實現這一點? –

+0

@Ankit Singh,但是這個過程在時間和資源方面也非常昂貴。仍然關於它不會在運行時創建的倉庫,它會拋出異常和應用程序不會啓動沒有實體管理器(春季數據日誌倉庫先決條件) –

+0

好的謝謝。所以你建議它不可能通過ORM(無論是通過jpa還是其他任何方式)。我們必須用spring-jdbc –