JavaEE互聯網輕量級框架整合開發(書籍)閱讀筆記(1):Mybatis和Hibernate概念理解


一、關鍵字說明:
oop:面向對象
aop:面向切面
ioc:控制反轉
orm:對象關系映射
pojo:數據庫表映射的java實體類

二、常識說明:
1.hibernate和mybatis都屬於持久層、orm框架,都可以通過xml或者注解來提供映射規則。
2.hibernate是完全面向POJO,mybatis不是。hibernate基本不再需要編寫SQL,就可以通過映射關系來操作數據庫,是一種全表映射的體現。
而mybatis則需要使用者提供SQL去運行。
3.myBatis只需要一個映射xml文件、一個java映射類,有趣的是不需要實體bean類。

三、Hibenate和Mybatis的區別
Hiernate和Mybatis的增刪查改,對於業務邏輯層來說大同小異,對於映射層而言Hibernate的配置不需要借口和SQL,相反Mybatis則是需要的。
對於Hibernate而言,不需要編寫大量的SQL,就可以完全映射,同時提供了日志、緩存、級聯(級聯比MyBatis強大)等特性,此外還提供HQL(Hibernate Query Language)對POJO進行操作,
使用十分方便,但是它也有致命的缺陷。
由於無須SQL,當多表關聯超過3個的時候,通過Hibernate的級聯會造成太多的性能丟失,又或者我現在訪問一個財務的表,然后他會關聯財產信息表,財產又分為機械、原料等,顯然機械和原料是不同的,
這樣關聯字段只能根據特定的條件變化而變化,而Hibernate無法支持這樣的變化。遇到存儲過程,Hibernate只能作罷。更為關鍵的是性能,在管理系統的時代,對於性能的要求不是那么苛刻,但是在互聯網
時代性能就是系統的根本,響應過慢就會喪失客戶,試想一下誰會用一個經常需要等待超過10s以上的應用呢?
以上的問題Mybatis都可以解決,Mybatis可以自由書寫SQL、支持動態SQL、處理列表、動態生成表名、支持存儲過程。這樣就可以靈活地定義查詢語句,滿足各類需求和性能優化的需要,這些在互聯網系統中是十分重要的。
但MyBatis也有缺陷。首先,它需要編寫SQL和映射規則,其工作量稍微大於Hibernate。其次它支持的工具也很有限,不能像Hibernate那樣有很多插件可以幫助生成映射代碼和關聯關系,而即使使用生成工具,往往也需要開發者
進一步簡化,Mybatis通過手工編碼,工作量相對大些。所以對於性能要求不太嚴苛的系統,比如管理系統、ERP系統等推薦使用Hibernate;而對於性能要求高、響應快、靈活的系統則推薦使用Mybatis。



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM