優點:
1. 易於上手和掌握。
2. sql寫在xml裡,便於統一管理和優化。
3. 解除sql與程式**的耦合。
4. 提供對映標籤,支援物件與資料庫的orm欄位關係對映
5. 提供物件關係對映標籤,支援物件關係組建維護
6. 提供xml標籤,支援編寫動態sql。
缺點:1. sql工作量很大,尤其是字段多、關聯表多時,更是如此。
2. sql依賴於資料庫,導致資料庫移植性差。
3. 由於xml裡標籤id必須唯一,導致dao中方法不支援方法過載。
4. 字段對映標籤和物件關係對映標籤僅僅是對對映關係的描述,具體實現仍然依賴於sql。(比如配置了一對多collection標籤,如果sql裡沒有join子表或查詢子表的話,查詢後返回的物件是不具備物件關係的,即collection的物件為null)
5. dao層過於簡單,物件組裝的工作量較大。
6. 不支援級聯更新、級聯刪除。
7. 編寫動態sql時,不方便除錯,尤其邏輯複雜時。
8 提供的寫動態sql的xml標籤功能簡單(連struts都比不上),編寫動態sql仍然受限,且可讀性低。
9. 若不查詢主鍵字段,容易造成查詢出的物件有「覆蓋」現象。
10. 引數的資料型別支援不完善。(如引數為date型別時,容易報沒有get、set方法,需在引數上加@param)
11. 多引數時,使用不方便,功能不夠強大。(目前支援的方法有map、物件、註解@param以及預設採用012索引位的方式)
12. 快取使用不當,容易產生髒資料。
總結:mybatis的優點其實也是mybatis的缺點,正因為mybatis使用簡單,資料的可靠性、完整性的瓶頸便更多依賴於程式設計師對sql的使用水平上了。sql寫在xml裡,雖然方便了修改、優化和統一瀏覽,但可讀性很低,除錯也非常困難,也非常受限,無法像jdbc那樣在**裡根據邏輯實現複雜動態sql拼接。mybatis簡單看就是提供了字段對映和物件關係對映的jdbc,省去了資料賦值到物件的步驟而已,除此以外並無太多作為,不要把它想象成hibernate那樣強大,簡單小巧易用上手,方便瀏覽修改sql就是它最大的優點了。
mybatis適用於小型且程式設計師能力較低的專案和人群使用,對於中大型專案來說我並不推薦使用,如果覺得hibernate效率低的話(實際上也是使用不當所致,hibernate是實際上是不適用於擁有高負載的工程專案),還不如直接用spring提供的jdbc簡單框架(template),同樣支援物件對映。
hiberate和mybatis優缺點對比
hibernate的dao層開發比mybatis簡單,mybatis需要維護sql和結果對映,hibernate的hql語句自動就生成了。hibernate對物件的維護和快取要比mybatis好,對增刪改查的物件的維護要方便,hibernate的 比較簡潔。hibernate資料庫移植性很好,myb...
mybatis的優缺點及應用場合
與jdbc相比,減少了50 以上的 量 mybatis是最簡單的持久化框架,小巧簡單且易學 mybatis想到靈活,不會對應用程式或者資料庫的現有設計強加任何影響,sql寫在xml裡,從程式 中徹底分離,降低耦合度,便於統一管理和優化,並可重用 提供xml標籤,支援編寫動態sql語句 提供對映標籤,...
MyBatis 的優缺點及可行性分析
1.優點 簡單 易於學習,易於使用,通過文件和源 可以比較完全的掌握它的設計思路和實現。滯後性 還沒有明確對.net2.0的支援。最新版本在2.0下編譯可以,但有些單元測試不能通過。不成熟,工程實踐較少 ibatisnet在實際專案中的使用較少。只是理論上可行.半orm,工具支援較少 需要我們自己寫...