業務邏輯層下的ORM層用什麼,有人推薦Hibernate,也有人對此持否定態度,所以決定先了解一下,以下是我看了幾天文檔後的一些體會,可能有點悲觀。
1,Hibernate究竟能用到多大的項目?
什麼是多大,這很難說,我想應該是數據庫表比較多,業務邏輯比較復雜(表關聯復雜),而且要求性能比較高吧。其他行業我不知道,電信行業軟件都該是如此。據我了解,這樣的數據庫訪問(尤其是頻繁發生的交易)通常需要用存促過程來解決,甭說自己寫java的JDBC了,更不用提用Hibernate來解決。所以肯定有個適用范圍的問題,希望已經熟練hibernate,並做個一些項目的人的人給予幫助解決
2 Hibernate性能會多好?
很多人都說Hibernate性能好,無非是它的一些cache功能,姑且不討論是否有這樣的最佳實踐(希望國內有人能提出best practices,或者pattern),單從cache本身來說,也並不是有了就好,否則,也不會出現分布式cache。就像長輩成天唠叨這,唠叨那,我表面認為那是對你好,其實你自己心裡甭說又多煩惱了。hibernate為了解決方方面面的性能,而提供了方方面面的特性,但這些加在一起就不是好事情了
3 DBA贊同在項目中使用Hibernate麼?
我不是DBA,甚至對寫sql語句都不熟悉,所以有時候寫DAO的時候經常請教DBA,DBA也很習慣的在DAO中找到他們熟悉的SQL(而不是HQL),我想這是DBA不提倡Hibernate的一個原因。另外一個原因是在於數據庫本身就是一個十全十美的系統,無論其性能還是伸縮性(我想沒人反對我的觀點吧),因此DBA深信,能把問題交給數據庫是最好的。因此他們不會贊同一切都依賴Hibernate。這個觀點也希望懂Hibernate的DBA給予證實
EJB的歷史使不少人都以懷疑的態度來看待Hibernate,以前EJB怎麼成功的,Hibernate也在走這樣的路,所以,我不太相信評測,只是希望一且能從實踐出發,讓hibernate能減少開發人員工作量,以及減少用它的風險。