我有一個實體映射到一個外部的oracle表,它是我的應用程序的主要數據源之一。該實體使用hibernate進行建模。休眠和Oracle原生函數
oracle表現在定義了一個複雜的函數來計算一些特殊的值。我需要以某種方式調用此函數 - 幾乎作爲實體的另一個訪問者。
你會提出什麼是最好的方法來合併這個函數調用,以便我可以保持相對正常的hibernate訪問實體?
我有一個實體映射到一個外部的oracle表,它是我的應用程序的主要數據源之一。該實體使用hibernate進行建模。休眠和Oracle原生函數
oracle表現在定義了一個複雜的函數來計算一些特殊的值。我需要以某種方式調用此函數 - 幾乎作爲實體的另一個訪問者。
你會提出什麼是最好的方法來合併這個函數調用,以便我可以保持相對正常的hibernate訪問實體?
我必須使用@Formula註釋
您可以直接使用帶HQL的存儲過程調用該函數。當然,除非你需要爲表格中的每個條目調用這個函數。但是,如果你在同一個hibernate會話中做到這一點,只要你沒有同時進行多次調用,這應該沒有顯着的性能影響。
爲了保持解耦從數據庫,由Hibernate提供一個解決方案,我會依賴Oracle調用這個函數,使用觸發器或視圖。
這種方法的主要優點是它對你的Hibernate實現是完全無縫的。
你將如何做到這一點與需要參數的函數? – LenW 2008-12-03 14:44:15
我需要爲表中的每個條目調用它。這個實體是從頭到尾處理的,因此有一種方法可以將函數調用作爲自然讀的一部分。 SQL是這樣的: 從DataTable中選擇FIELD1,FIELD2,FUNCTION(FIELD1) – LenW 2008-11-28 06:38:20