為什麼要選擇Hibernate

2021-09-01 02:12:32 字數 1702 閱讀 7549

[quote="huashuizhuhui"][quote="fainfy"][quote="peihexian"]說hibernate好用的人,你開發的系統業務資料量沒上過幾百萬上千萬的話別說話。[/quote]

幾百萬上千萬就把hibernate用跨了,說明你根本就是在亂用。

[/quote]

我這裡資料量沒這麼大,沒有發言權,你說說你是怎麼用的啊[/quote]

說說我們的選擇吧,前面提到我們已經放棄了struts,轉投到spring mvc,但是hibernate還是保留了。

原因有:

1. 我們是做平台的,客戶要求多種多樣,我們是需要支援多個資料庫的,hibernate可以比較容易遮蔽資料庫的差異;

2. hibernate採用物件導向的方式來寫sql,也就是hql和criteria,在資料庫和dao之間多了一層,資料庫的改動可以通過對映關係遮蔽部分影響。

3. 因為我們是要不斷的增加功能,偶然要做做系統重構,快速快發尤其重要,hibernate的**量和改動量都要比其他框架來的少,起碼經過我們的封裝已經使得用起來是很簡單了。

4. 對於效能有影響的地方和很難用hibernate表達的地方我們會採用jdbctemplate,或者採用view封裝一次再map到hibernate,採用hibernate也不排斥其他持久層框架的存在。

5. 盡量少用one to many, many to one等功能,可能這裡不太oo,但是**明了,不容易出問題。

6. 我們暫時還沒有遇到幾千萬的資料量那麼大的客戶,要做到那麼大資料量的時候也可以從資料庫,系統,網路各個方面來優化。系統推到重來也不是什麼問題。

7.hibernate的一級快取對於長transaction的業務複雜的**反而有好處,見上面的某些分析。

8. 採用快取和靜態頁面可以消除部分效能影響,或者採用資料庫特有功能,不過取消hibernate的二級快取,採用spring的快取或者自己搞快取。

9. 文件多,容易解決問題,也是jpa標準的重要參考。

hibernate不好的地方:

1. 多佔記憶體,因為他需要把domain對應的configuration都load到記憶體裡面去,多用記憶體是正常的,但是出現outofmemerey肯定不是hibernate的問題了,一般應用記憶體還是夠的。

2. 效能問題。hibernate或者ibatis也好,最終都是通過反射把resultset變為對應的domain object,跟了一下hibernate的內部**,好像是用method.invoke來呼叫get 和set方法的,用了cglib或者動態**方式,這個方式肯定是要比直接呼叫get和set方法要慢的。在jdk不斷優化的今天,這個差距應該會縮小。 但是ibatais應該也是通過這個方式來做,沒有看過不太肯定。hibernate多了乙個將hql或者domain object轉化為sql的過程,這個過程也會消耗一些效能,例如字串拼接,記錄domain object的關係等。

經過以上分析,可能hibernate會給我帶來一定的效能損失,但是我可以通過其他辦法來彌補,記憶體就更不是問題了。但是他確實帶來了比較好的地方,因此我們會繼續用hibernate。

所以說hibernate適合做企業級應用,對於那種記憶體和效能要求都很高或者本來就用ibatis的情況,其實可以選擇ibatias或者jdbctemplate的。就效能而言,

jdbctemplate > ibatis < hibernate

除了快取的作用外只說db操作,純jdbc是最快的,因為那樣沒有任何負擔,但是**搞得很難看,你會這麼選擇嗎?

為什麼要選擇ISP 為什麼要選擇AHD

在影象傳輸中,我們為什麼選擇nextchip?為什麼要選擇isp?為什麼要選擇ahd?為什麼選擇北京冠宇銘通?這個問題我倒著回答各位 一 北京冠宇銘通科技是nextchip目前為止唯一一家正式官方授權 車載產品廠家之一 二 ahd和其他幾種傳輸方式相比,擁有自己的專利,其他幾家有專利的沒有幾個,如果...

為什麼要選擇UniDAC

其實delphi優秀的資料集元件真不少,除了上訴的資料集元件,還有zeosdb sql direct unidac等,要是專業的資料集元件,更是百花盛開,如fibplus sdac odac doa等等,商業和開源不盡其中!這裡只討論unidac和ado的一些比較。delphi能發展到現在,和一些著...

為什麼要選擇PDF技術

為什麼要選擇pdf技術 一 電子文件在實際應用中經常遇到的問題 1.不夠安全 目前大多數檔案沒有對檔案內容進行更高階別的安全控制,一般人員可以很容易地開啟 列印 複製檔案,造成檔案內容的洩密。2.不能信任 當前極大多數的電子檔案沒有數字簽名功能,這類檔案具有不可信任性及易抵賴性,無法證明檔案的真實性...