hibernate oracle查询最大值_Java大数据:Mybatis和Hibernate对比分析
在Java企業級平臺開發任務當中,持久層框架的選擇,Mybatis和Hibernate都占據一定的市場。從大趨勢來說,傳統企業偏愛Hibernate,而互聯網更偏愛Mybatis。今天的大數據基礎分享,我們就來對Mybatis和Hibernate兩個框架做個簡單的對比分析。
一、關于Mybatis
MyBatis本是Apache的一個開源項目iBatis,2010年遷移到google code,并且改名為MyBatis,之后就以Mybatis命名固定下來,2013年11月遷移到Github。
MyBatis是一款優秀的持久層框架,基于Java,內部封裝了JDBC,使得開發者只需要關注SQL語句本身,而不需要花費精力去處理加載驅動、創建連接、創建statement等繁雜的過程。
具體來說,Mybatis支持定制化SQL、存儲過程以及高級映射,避免了幾乎所有的JDBC代碼和手動設置參數以及獲取結果集。
MyBatis可以使用簡單的XML或注解來配置和映射原生類型、接口和Java的POJO(Plain Old Java Objects,普通老式Java對象)為數據庫中的記錄。
二、關于Hibernate
Hibernate同樣也是一個優秀的持久層框架,出身于sf.net,現在已經成為Jboss的一部分。Hibernate作為O/R mapping框架,與Mybatis常常被拿來作比。
Hibernate對數據庫結構提供了較為完整的封裝,Hibernate的O/R Mapping實現了POJO和數據庫表之間的映射,以及SQL的自動生成和執行。開發者往往只需定義好了POJO到數據庫表的映射關系,即可通過Hibernate提供的方法完成持久層操作,甚至不需要對SQL的熟練掌握,Hibernate/OJB會根據制定的存儲邏輯,自動生成對應的SQL并調用JDBC接口加以執行。
三、MyBatis和Hibernate的對比
MyBatis與Hibernate都是對象關系映射(ORM)框架,都是用于將數據持久化的框架技術,都是對JDBC的封裝。兩者的區別是存在于多方面的:1.Hibernate是全自動,而MyBatis是半自動
Hibernate完全可以自動生成SQL。而MyBatis僅有基本的字段映射,仍然需要通過手寫SQL來實現和管理。2.Hibernate編碼量小會減少開發周期,MyBatis編碼量大會拖慢開發周期
Hibernate是對JDBC的高度封裝,使用起來幾乎不用寫SQL,開發的時候,會減低開發周期.MyBatis需要自己寫SQL,編碼量較大,會拖慢開發周期。3.Hibernate數據庫移植性遠大于MyBatis
Hibernate通過它強大的映射結構和HQL語言,大大降低了對象與數據庫(oracle、mySQL等)的耦合性,而MyBatis由于需要手寫SQL,移植性也會隨之降低很多,成本很高。4.MyBatis入門簡單,Hibernate入門比較難
MyBatis入門簡單,即學即用。Hibernate學習門檻高,要精通門檻更高,而且怎么設計O/R映射,在性能和對象模型之間如何權衡取得平衡,以及怎樣用好Hibernate方面需要開發者的經驗和能力都很強才行。5.SQL直接優化上,MyBatis要比Hibernate方便很多
由于MyBatis的SQL都是寫在xml里,因此優化SQL比Hibernate方便很多。而Hibernate的SQL很多都是自動生成的,無法直接維護SQL;總之,寫SQL的靈活度上Hibernate不及MyBatis。四、MyBatis和Hibernate選哪個?
在實際開發任務當中,對于持久層框架的選擇,不僅僅要考慮到它們的特性及性能,更要根據項目需求去考慮究竟哪一個更適合項目開發。
舉個簡單的例子,一個項目中用到的復雜查詢基本沒有,就是簡單的增刪改查,這樣選擇Hibernate效率就很快了,因為基本的SQL語句已經被封裝好了,可以節約時間提升效率;而對于一個大型項目,復雜語句較多,選擇MyBatis就會更適合,而且SQL語句的管理也比較方便。
關于大數據基礎,Mybatis和Hibernate對比分析,以上就為大家做了簡單的介紹了。持久層框架的選擇,是大數據基礎架構設計當中需要考慮的重要一環,Hibernate和Mybatis建議可以結合實際來選擇。
總結
以上是生活随笔為你收集整理的hibernate oracle查询最大值_Java大数据:Mybatis和Hibernate对比分析的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: conda deactivate pyt
- 下一篇: 从头到尾再讲一遍ThreadLocal
