日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

jdbc,mybatis,hibernate各自优缺点及区别

發布時間:2025/1/21 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jdbc,mybatis,hibernate各自优缺点及区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

jdbc,mybatis,hibernate各自優缺點及區別

先比較下jdbc編程和hibernate編程各自的優缺點。

JDBC:

我們平時使用jdbc進行編程,大致需要下面幾個步驟:1,使用jdbc編程需要連接數據庫,注冊驅動和數據庫信息2,操作Connection,打開Statement對象3,通過Statement對象執行SQL,返回結果到ResultSet對象4,使用ResultSet讀取數據,然后通過代碼轉化為具體的POJO對象5,關閉數據庫相關的資源

jdbc的缺點:

一:工作量比較大,需要連接,然后處理jdbc底層事務,處理數據類型,還需要操作Connection,Statement對象和ResultSet對象去拿數據并關閉他們。二:我們對jdbc編程可能產生的異常進行捕捉處理并正確關閉資源

由于JDBC存在的缺陷,在實際工作中我們很少直接使用jdbc進行編程,用的更多的是ORM對象關系模型來操作數據庫,Hibernate就是一個ORM模型

Hibernate:

Hibernate是建立在若干POJO通過xml映射文件(或注解)提供的規則映射到數據庫表上的。我們可以通過POJO直接操作數據庫的數據,他提供的是一種全表映射的模型。相對而言,Hibernate對JDBC的封裝程度還是比較高的,我們已經不需要寫SQL,只要使用HQL語言就可以了。

使用Hibernate進行編程有以下好處:

1,消除了代碼的映射規則,它全部分離到了xml或者注解里面去配置。 2,無需在管理數據庫連接,它也配置到xml里面了。 3,一個會話中不需要操作多個對象,只需要操作Session對象。 4,關閉資源只需要關閉一個Session便可。 這就是Hibernate的優勢,在配置了映射文件和數據庫連接文件后,Hibernate就可以通過Session操作,非常容易,消除了jdbc帶來的大量代碼,大大提高了編程的簡易性和可讀性。Hibernate還提供了級聯,緩存,映射,一對多等功能。Hibernate是全表映射,通過HQL去操作pojo進而操作數據庫的數據。

Hibernate的缺點:

1,全表映射帶來的不便,比如更新時需要發送所有的字段。 2,無法根據不同的條件組裝不同的SQL。 3,對多表關聯和復雜的sql查詢支持較差,需要自己寫sql,返回后,需要自己將數據封裝為pojo。 4,不能有效的支持存儲過程。 5,雖然有HQL,但是性能較差,大型互聯網系統往往需要優化sql,而hibernate做不到。

Mybatis:

為了解決Hibernate的不足,Mybatis出現了,Mybatis是半自動的框架。之所以稱它為半自動,是因為它需要手工匹配提供POJO,sql和映射關系,而全表映射的Hibernate只需要提供pojo和映射關系即可。
Mybatis需要提供的映射文件包含了一下三個部分:sql,映射規則,pojo。在Mybatis里面你需要自己編寫sql,雖然比Hibernate配置多,但是Mybatis可以配置動態sql,解決了hibernate表名根據時間變化,不同條件下列不一樣的問題,同時你也可以對sql進行優化,通過配置決定你的sql映射規則,也能支持存儲過程,所以對于一些復雜和需要優化性能的sql查詢它就更加方便。Mybatis幾乎可以做到jdbc所有能做到的事情。

什么時候使用Hibernate,Mybatis

Hibernate作為留下的Java orm框架,它確實編程簡易,需要我們提供映射的規則,完全可以通過IDE生成,同時無需編寫sql確實開發效率優于Mybatis。此外Hibernate還提供了緩存,日志,級聯等強大的功能,但是Hibernate的缺陷也是十分明顯,多表關聯復雜sql,數據系統權限限制,根據條件變化的sql,存儲過程等場景使用Hibernate十分不方便,而性能又難以通過sql優化,所以注定了Hibernate只適用于在場景不太復雜,要求性能不太苛刻的時候使用。
如果你需要一個靈活的,可以動態生成映射關系的框架,那么Mybatis確實是一個最好的選擇。它幾乎可以替代jdbc,擁有動態列,動態表名,存儲過程支持,同時提供了簡易的緩存,日志,級聯。但是它的缺陷是需要你提供映射規則和sql,所以開發工作量比hibernate要大些。

jdbc,mybatis,hibernate的區別

1)從層次上看,JDBC是較底層的持久層操作方式,而Hibernate和MyBatis都是在JDBC的基礎上進行了封裝使其更加方便程序員對持久層的操作。 2)從功能上看,JDBC就是簡單的建立數據庫連接,然后創建statement,將sql語句傳給statement去執行,如果是有返回結果的查詢語句,會將查詢結果放到ResultSet對象中,通過對ResultSet對象的遍歷操作來獲取數據;Hibernate是將數據庫中的數據表映射為持久層的Java對象,對sql語句進行修改和優化比較困難;MyBatis是將sql語句中的輸入參數和輸出參數映射為java對象,sql修改和優化比較方便. 3)從使用上看,如果進行底層編程,而且對性能要求極高的話,應該采用JDBC的方式;如果要對數據庫進行完整性控制的話建議使用Hibernate;如果要靈活使用sql語句的話建議采用MyBatis框架。

總結

以上是生活随笔為你收集整理的jdbc,mybatis,hibernate各自优缺点及区别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。