2012-08-14 143 views
2

來自mysql後臺,我可以設置我想用於連接url中的所有sql查詢的默認模式名稱。我現在有一個需要訪問的Oracle數據庫。我知道我無法指定我想在URL中使用的模式,因爲用戶是使用的模式名稱。如何使用Oracle DB在Spring/mybatis應用程序中設置默認模式?

我意識到,我可以用一行SQL代碼:

ALTER SESSION SET CURRENT_SCHEMA=default_schema 

該項目使用mybatis 2.3.5我的SQL框架,但我完全新的MyBatis的。有沒有簡單的方法來配置mybatis來完成這個?我的應用程序是Spring 3應用程序,所以我使用Spring DataSourceTransactionManager來管理我的事務。我會假設管理員必須瞭解這一要求,以確保在創建新連接時發送該命令。

我試過在線搜索,但是我發現大多數例子都有在SqlMaps中的sql查詢中包含的模式名稱,我發現這是不好的做法。

在理想情況下,模式名稱將成爲URL的一部分,這樣我就可以在不觸及代碼的情況下對不同環境(例如:dev,test,prod等)的模式名稱進行更改(即:僅限在JNDI /應用程序服務器級配置)。我會很高興,如果我可以使用Spring配置值來設置它,以及我仍然可以使用JNDI查找或系統環境屬性來檢索值。

任何人都可以指向正確的方向嗎?

感謝,

埃裏克

回答

3

據我所知,有在Oracle中沒有選項來改變您的網址,以便連接到特定的用戶架構。

1)mybatis:在開始操作之前,您可以將當前的模式設置爲應有的模式。您可以將您的規範寫入屬性文件並從該文件設置方法的參數。在這種情況下,您不需要更改代碼來更改架構。

<update id="mySetSchemaMethod" parameterClass="String"> 
ALTER SESSION SET CURRENT_SCHEMA = ${schemaName} 
</update> 

2)觸發:如果您僅使用此特定的Java應用程序這方面,你可以設置一個客戶端事件觸發因此請設置CURRENT_SCHEMA。這次,您需要更改觸發器以管理測試/更改。

CREATE OR REPLACE TRIGGER Set_Schema_On_Logon 
    AFTER LOGON 
    ON MY_SCHEMA 
BEGIN 
    ALTER SESSION SET CURRENT_SCHEMA = MY_TEST_SCHEMA; 
END; 
+0

謝謝!不幸的是,這個信息對於我之前的項目來說太遲了,但對於未來的案例將是非常寶貴的。 – 2013-11-15 16:03:29