2010-09-08 75 views
0

我們的生產系統中的JPA 2.0/ORM, 的體系結構存在問題(我相信很多系統),我們需要能夠更改SQL查詢是動態的,因爲查詢中的查詢緩慢且僅在生產中暴露(重負載和繁重數據), 因此我們在存儲過程中使用並從iBatis調用它們。如何在生產中動態更改JPA 2.0 SQL/JPQL查詢

正如我所看到的模式,最好的做法是在數據庫層和應用程序層之間分開,這樣我可以告訴我的DBA在生產中修復錯誤的存儲過程/索引表而不部署新的應用程序(分發系統 - 長部署時間)。

在ORM/JPA 2.0代碼中定義的命名查詢和它的原因程序員趕上整個DB問題在開發/ QA - 很糟糕!

我該框架給出一個選項來定義本地查詢API中所看到的 - 但在書籍/教程最好的做法是使用命名查詢...

我讀了休眠/ JPA 2.0後SPEC看看是否有解決這個問題的方法, 我明白沒有解決方案...?

它在我看來非常有線,我需要定義硬編碼在應用程序代碼層中的查詢... 也可以定義XML描述符中的查詢並通過熱部署的補丁解決方案加載XML - 非常糟糕而不是標準!

您是否有設計模式/解決方案

謝謝大家!

Uri。

回答

4

我建議您在部署之前做單元測試和性能測試。在這個晚期,你不應該發現有問題或緩慢的查詢。

JPA/ORM是不喜歡iBatis的,因爲你是查不到。

「越野車」聽起來像一個缺乏全面的單元測試。

「慢」聽起來像是你的DBA都沒有檢查由JPA生成的SQL。解釋所有的計劃。您可能在數據庫方面存在索引或模式問題,因爲JPA無法解決大量問題。

模式不是解決方案。

+1

是的,但如果真的需要動態 – Uri 2010-09-08 09:52:17

+0

我同意你的看法! – Uri 2010-09-08 10:03:49

+0

但是,如果我發現生產中存在一個錯誤,我仍然希望在生產系統上修復它 - 而存儲過程是實現它的唯一方法......根據此要求,什麼是最佳解決方案。謝謝! – Uri 2010-09-08 10:06:01

0

您應該可以有你的實體從美景,以及表中讀取數據。然後,可以即時更改視圖的sql。