JDBC、MyBatis、Hibernate的區別


JDBC

1.使用JDBC編程需要鏈接數據庫,注冊驅動和數據庫信息。

2.操作Connection,打開Statement對象。

3.通過Statement執行SQL語句,返回結果放到ResultSet對象。

4.使用ResultSet讀取數據。

5.關閉數據庫相關的資源。

JDBC缺點:

工作量比較大,需要連接,然后處理jdbc底層事務,處理數據類型,還需要操作Connection,Statement對象和ResultSet對象去拿數據並關閉他們

沒有使用框架的時候 sql語句是和java語句一起寫在dao層 耦合度高,維護不易而且實際開發中sql是會變的,需要頻繁修改 當你要替換某個sql代碼的時候

,需要對整個項目 進行操作,極不方便。

JDBC優點:

接近底層,理論上效率最高

MyBatis

半自動化的持久層框架 半自動 輕量級 

1.SQLSessionFactoryBuilder(構造器):它會根據配置信息或者代碼生成SqlSessionFactory。

2.SqlSessionFactory(工廠接口):依靠工廠生成SqlSession。

3.SqlSession(會話):是一個既可以發送SQL去執行並且返回結果,也可以獲取Mapper接口。

4.SQL Mapper:是由一個JAVA接口和XML文件(或注解)構成,需要給出對應的SQL和映射規則。SQL是由Mapper發送出去,並且返回結果。

Mybatis的優點:

1、易於上手和掌握,提供了數據庫查詢的自動對象綁定功能,而且延續了很好的SQL使用經驗,對於沒有那么高的對象模型要求的項目來說,相當完美。

2sql寫在xml里,便於統一管理和優化, 解除sql與程序代碼的耦合。

3、提供映射標簽,支持對象與數據庫的orm字段關系映射

4提供對象關系映射標簽,支持對象關系組建維護

5、提供xml標簽,支持編寫動態sql

6、速度相對於Hibernate的速度較快

Mybatis的缺點:

1、關聯表多時,字段多的時候,sql工作量很大。

2sql依賴於數據庫,導致數據庫移植性差。

3、由於xml里標簽id必須唯一,導致DAO中方法不支持方法重載。

4、對象關系映射標簽和字段映射標簽僅僅是對映射關系的描述,具體實現仍然依賴於sql

5DAO層過於簡單,對象組裝的工作量較大。

6、不支持級聯更新、級聯刪除。

7Mybatis的日志除了基本記錄功能外,其它功能薄弱很多。

8、編寫動態sql,不方便調試,尤其邏輯復雜時。

9、提供的寫動態sqlxml標簽功能簡單,編寫動態sql仍然受限,且可讀性低。

Hibernate

Hibernate的優點:

1hibernate是全自動,hibernate完全可以通過對象關系模型實現對數據庫的操作,擁有完整的JavaBean對象與數據庫的映射結構來自動生成sql

2、功能強大,數據庫無關性好,O/R映射能力強,需要寫的代碼很少,開發速度很快。

3、有更好的二級緩存機制,可以使用第三方緩存。

4、數據庫移植性良好。

5hibernate擁有完整的日志系統,hibernate日志系統非常健全,涉及廣泛,包括sql記錄、關系異常、優化警告、緩存提示、臟數據警告等

Hibernate的缺點:

1、學習門檻高,精通門檻更高,程序員如何設計O/R映射,在性能和對象模型之間如何取得平衡,以及怎樣用好Hibernate方面需要的經驗和能力都很強才行

2hibernatesql很多都是自動生成的,無法直接維護sql;雖然有hql查詢,但功能還是不及sql強大,見到報表等變態需求時,hql查詢要虛,也就是說hql查詢是有局限的;hibernate雖然也支持原生sql查詢,但開發模式上卻與orm不同,需要轉換思維,因此使用上有些不方便。總之寫sql的靈活度上hibernate不及mybatis


免責聲明!

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



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