簡體   English   中英

如何使用Oracle DB在Spring / mybatis應用程序中設置默認架構?

[英]How to set default schema in a Spring/mybatis application with Oracle DB?

來自mysql背景,我能夠在連接url中設置我想用於所有sql查詢的默認模式名稱。 我現在有一個我需要訪問的Oracle數據庫。 我知道我無法指定我想在URL中使用的模式,因為用戶是正在使用的模式名稱。

我意識到我可以使用一行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查找或系統環境屬性來檢索值。

誰能指出我正確的方向?

謝謝,

埃里克

據我所知,Oracle中沒有選項可以更改您的URL以連接到特定的用戶架構。

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;  

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM