我正在分析我的應用程序中數據庫層的選項。我發現休眠是一個非常流行的選擇,但很少有朋友告訴我更好地使用存儲過程/函數而不是休眠。與這些數據庫對象相比,Hibernate有性能問題。有沒有其他的選擇。我的應用程序可能有很高的交易量,因此需要選擇一個可以提供更好性能的選項。有人可以對此有所瞭解,並幫助我選擇最佳選擇。我使用spring框架作爲web層的核心和richfaces。hibernate v/s存儲過程或函數性能
回答
我的應用程序可以有非常高的 交易量因此需要 選擇一個選項,它提供了一個更好 性能
好吧,如果性能是你唯一的(或主要)基準,那麼它的很難在數據庫服務器上擊敗Oracle軟件包。但是,您的公司應該考慮開發人員的優勢。這是一個大多數Java開發者和1或2個孤獨的Oracle開發人員和1個DBA的商店嗎?如果是這樣,不要在Oracle軟件包中開發您的中間件系統,您可能會使用Hibernate使用Java編寫一些XML服務。在負載下速度不會很快,但對於您的公司來說更容易維護和增長。
注:我偏向於使用Oracle技術,但那是我的優勢所在。
最後我們決定去純jdbc和程序來代替hibernate。這個決定是基於在互聯網上發現的一些比較報告,以及我們正在尋求高性能而不是開發舒適的事實。感謝tbone。 – Amit 2011-06-01 08:35:01
肯定嘛!此外,您可能已經意識到了這一點,但從一開始就只是主動和設置編碼標準,命名約定,代碼升級程序,單元測試要求,日誌記錄/例外標準等。無論出於何種原因,這似乎在Java商店中被廣泛知曉/遵循,但是對於一組數據庫開發人員來說卻並非如此。早點奠定規則/框架。 – tbone 2011-06-01 11:04:09
感謝您的建議。你有什麼事嗎?我們正在使用MS SQL服務器。我認爲這些指南對任何數據庫都是一樣的。我們有人來管理數據庫腳本,但仍然希望從頭開始確保事情順利。 – Amit 2011-06-01 13:18:52
最好的選擇是你會發現它。有時使用任何ORM都是完美的,並且會支持你,其他情況下它不是最好的選擇。我認爲真正的答案取決於你在做什麼,你是如何做的以及產品設計的質量。所有這些都有所作爲,並且可以大大地決定失敗或成功。
底線,絕對是一個可怕的政策 - 使用技術,工作和解決問題。如果它開始成爲問題,請重新評估。
這是很晚,但我想添加幾點使用休眠vs使用存儲過程。
從性能的角度來看,我相信由於編寫存儲過程意味着你更接近數據庫,所以如果高效寫入,總會產生更快的輸出。因此,休眠,因爲它在數據庫上的工作並不比數據庫更快。優化查詢的自由是你從休眠中竊取的東西,而休眠可能會產生許多最佳查詢,但仍然有可能獲得更好的優化。
即使親hibernate開發人員承認,如果你正在更新大型數據集,最好使用一個過程,而不是在網絡上通過休眠進行多次調用。
所以,總結我建議使用程序和功能良好的性能
- 1. 存儲過程 - 函數性能差異
- 2. 性能的LINQ VS SQL存儲過程
- 3. MySql存儲過程或函數?
- 4. 存儲過程比函數快或不
- 5. 遞歸存儲過程或函數
- 6. Oracle存儲過程性能
- 7. PHP和數據庫:視圖,函數和存儲過程性能
- 8. Hibernate存儲過程困境
- 9. GAE數據存儲性能vs SQLite
- 10. 爲什麼存儲過程和函數會提高性能?
- 11. 使用MIN和MAX函數存儲過程性能下降
- 12. 存儲過程與函數編譯和性能差異
- 13. SSIS性能中的存儲過程vs嵌入式SQL
- 14. 存儲過程和函數
- 15. TransactionScope Vs存儲過程
- 16. 存儲過程vs Linq2Entities
- 17. EntityFramework VS SQL存儲過程
- 18. Linq vs存儲過程
- 19. Dapper ORM vs存儲過程
- 20. PostgreSQL性能 - 選擇vs存儲功能
- 21. hibernate存儲過程查詢緩存
- 22. 標量函數vs存儲過程與INSERT INTO新表
- 23. 使用JPA(休眠)VS存儲過程
- 24. mssql - 一個存儲過程vs多個存儲過程
- 25. 存儲過程vs無存儲過程 - 安全視點
- 26. 返回存儲過程的SQL性能
- 27. 存儲過程提高性能
- 28. 存儲過程的性能問題
- 29. 測試存儲過程性能
- 30. 提高存儲過程性能
是否可行,爲您使用這兩種方法,來衡量自己的表現只寫了簡單的測試應用程序? – 2011-05-10 19:18:26
我認爲,但性能中的一個元素是數據庫大小,我將能夠模擬。 – Amit 2011-05-10 19:31:23