2011-05-10 18 views
5

我正在分析我的應用程序中數據庫層的選項。我發現休眠是一個非常流行的選擇,但很少有朋友告訴我更好地使用存儲過程/函數而不是休眠。與這些數據庫對象相比,Hibernate有性能問題。有沒有其他的選擇。我的應用程序可能有很高的交易量,因此需要選擇一個可以提供更好性能的選項。有人可以對此有所瞭解,並幫助我選擇最佳選擇。我使用spring框架作爲web層的核心和richfaces。hibernate v/s存儲過程或函數性能

+0

是否可行,爲您使用這兩種方法,來衡量自己的表現只寫了簡單的測試應用程序? – 2011-05-10 19:18:26

+0

我認爲,但性能中的一個元素是數據庫大小,我將能夠模擬。 – Amit 2011-05-10 19:31:23

回答

2

我的應用程序可以有非常高的 交易量因此需要 選擇一個選項,它提供了一個更好 性能

好吧,如果性能是你唯一的(或主要)基準,那麼它的很難在數據庫服務器上擊敗Oracle軟件包。但是,您的公司應該考慮開發人員的優勢。這是一個大多數Java開發者和1或2個孤獨的Oracle開發人員和1個DBA的商店嗎?如果是這樣,不要在Oracle軟件包中開發您的中間件系統,您可能會使用Hibernate使用Java編寫一些XML服務。在負載下速度不會很快,但對於您的公司來說更容易維護和增長。

注:我偏向於使用Oracle技術,但那是我的優勢所在。

+0

最後我們決定去純jdbc和程序來代替hibernate。這個決定是基於在互聯網上發現的一些比較報告,以及我們正在尋求高性能而不是開發舒適的事實。感謝tbone。 – Amit 2011-06-01 08:35:01

+0

肯定嘛!此外,您可能已經意識到了這一點,但從一開始就只是主動和設置編碼標準,命名約定,代碼升級程序,單元測試要求,日誌記錄/例外標準等。無論出於何種原因,這似乎在Java商店中被廣泛知曉/遵循,但是對於一組數據庫開發人員來說卻並非如此。早點奠定規則/框架。 – tbone 2011-06-01 11:04:09

+0

感謝您的建議。你有什麼事嗎?我們正在使用MS SQL服務器。我認爲這些指南對任何數據庫都是一樣的。我們有人來管理數據庫腳本,但仍然希望從頭開始確保事情順利。 – Amit 2011-06-01 13:18:52

1

最好的選擇是你會發現它。有時使用任何ORM都是完美的,並且會支持你,其他情況下它不是最好的選擇。我認爲真正的答案取決於你在做什麼,你是如何做的以及產品設計的質量。所有這些都有所作爲,並且可以大大地決定失敗或成功。

底線,絕對是一個可怕的政策 - 使用技術,工作和解決問題。如果它開始成爲問題,請重新評估。

0

這是很晚,但我想添加幾點使用休眠vs使用存儲過程。

從性能的角度來看,我相信由於編寫存儲過程意味着你更接近數據庫,所以如果高效寫入,總會產生更快的輸出。因此,休眠,因爲它在數據庫上的工作並不比數據庫更快。優化查詢的自由是你從休眠中竊取的東西,而休眠可能會產生許多最佳查詢,但仍然有可能獲得更好的優化。

即使親hibernate開發人員承認,如果你正在更新大型數據集,最好使用一個過程,而不是在網絡上通過休眠進行多次調用。

所以,總結我建議使用程序和功能良好的性能