ibatis瞭解

        IBATIS:最大的優點是可以有效的控制sql發送的數目,提高數據層的執行效率!好象阿里巴巴現在就用的是IBATIS;它需要程序員自己去寫sql 語句,不想hibernate那樣是完全面向對象的,自動化的,ibatis是半自動化的,通過表和對象的映射以及手工書寫的sql語句,能夠實現比 hibernate等更高的查詢效率。 

 

        1.優點 簡單: 易於學習,易於使用,通過文檔和源代碼,可以比較完全的掌握它的設計思路和實現。 實用: 提供了數據映射功能,提供了對底層數據訪問的封裝(例如ado.net),提供了DAO框架,可以使我們更容易的開發和配置我們的DAL層。靈活: 通過sql基本上可以實現我們不使用數據訪問框架可以實現的所有功能,或許更多。功能完整: 提供了連接管理,緩存支持,線程支持,(分佈式)事物管理,通過配置作關係對象映射等數據訪問層需要解決的問題。提供了DAO支持,並在DAO框架中封裝了ADO.NET,NHibernate和DataMapper。增強系統的可維護性: 通過提供DAL層,將業務邏輯和數據訪問邏輯分離,使系統的設計更清晰,更易維護,更易單元測試。sql和代碼的分離,提高了可維護性。

 

        2.缺點 滯後性: 還沒有明確對.NET2.0的支持。最新版本在2.0下編譯可以,但有些單元測試不能通過。 不成熟,工程實踐較少: IbatisNet在實際項目中的使用較少。 只是理論上可行. 半ORM,工具支持較少: 需要我們自己寫sql,並且.NET下還未發現可以自動生成業務層類和配置文件的工具,這點和NHibernate不一樣,NHibernate會爲我們的數據庫直接產生sql,並有一些輔助工具。因此使用Ibatis比NHibernate要多做一些工作。

 

        3.可行性 沒有最好的框架,只有最適合的框架。存在的便是合理的,它存在就說明有它存在的道理。但它未必爲我們存在。所以選擇一個框架最主要的是看它對你有沒有意義,意義有多大,是不是比其他框架帶給你的好處要多。沒有絕對的優點也沒有絕對的缺點,重要的是看在什麼情況下討論。上面說了部分的Ibatis的優點和部分缺點。這些優點從理論上證明Ibatis對任何數據持久層都合適,但未必是最好的選擇。下面對上面的優缺點分別從兩方面討論。簡單:我們都喜歡簡單,簡單意味着學習成本低,使用中出錯的可能性低。同時,簡單的東西一般來說功能不夠強大。反過來,複雜的東西學習成本高,用起來不方便,並且團隊沒有很強的技術實力,一般不要使用。實用: 解決了項目中需要解決的問題,這是任何實際工程中採用的框架和工具都應具有的性質,否則就不要拿到實際項目中來。靈活:靈活有兩層意思,一種是簡單易擴展,另一種是功能強大提供了很多選項。Ibatis屬於前者,Hibernate屬於後者。兩者各有優缺點。功能完整: Ibatis的功能完整也是相對的,比我們自己開發的框架應該完整,但對比其他框架肯定也有一些解決不了的問題。增強系統的可維護性:利用Ibatis可以做到sql和代碼分離,可以設計出一個清晰的數據訪問層(DAL)。但項目架構是否科學合理,是否以維護,關鍵不在Ibatis,因爲它只是一個數據層框架。但是我們也不得不清楚,要想發揮Ibatis的優勢,我們需要做一些額外工作,比如最好設計DAO接口,需要將業務層實體和對實體的訪問放在不同的工程中,同時需要維護xml配置文件。滯後性: Ibatis組現在還沒有提到要支持.NET2.0,很多人在.NET2.0下使用Ibatis都出現了問題。所以如果要使用.NET2.0開發,IBatis不是一個好選擇,還需要等待。不成熟:開源的東西很難說成熟,但一般比我們自己寫的框架要成熟。由於我們可以拿到他的源代碼,所以關鍵在於我們能否駕馭它。半ORM,工具支持少:這注定了Ibatis不能從本質上提升開發效率,我們需要自己寫sql,寫實體類,寫配置文件。但這也是它優越的地方,它沒有爲我們做的他多,所以我們就有更多的施展空間。而且它非常適合那些並不能完全控制數據庫的系統和需要利用數據庫本身提供的高級特性的統計查詢系統的開發。 使用Ibatis需要自己寫sql,由於我們的sql不可能完全符合sql標準,比起NHibernate產生的sql來,可移植性差。不過由於我們更改數據庫的可能性較小,對我們來說sql符合標準以便可以在遷移到不同服務器時代價最小並不是十分必要的。另一方面,NHibernate雖然可以屏蔽很多數據庫間的不同,但是卻很難利用某些數據庫的高級特性,比如Oracle的分析統計函數。 NHibernate不適合數據庫模式不規範,約束不完整,需要大量複雜查詢的系統,同時NHibernate的學習成本較高,完全掌握 NHibernate也較困難,風險較大。 自己寫框架未必比Ibatis的好,穩定,強大和可擴展。而且自己開發框架也需要較大的工作量。如果使用DotNet並且要選一個數據層框架,而系統中有相當一部分較複雜的sql,或數據庫設計不合理,髒數據多,對性能和資源要求嚴格,Ibatis 是一個比較不錯的選擇。他的那些缺點並不是致命的,而且也是有一些解決方案的。尤其是,當選用了Ibatis的DataAccess作爲DAO框架時,我們可以同時使用NHibernate,ADO.NET和DataMapper(IbatisNet的核心組件),那樣將會使風險降到最低,並且整個系統的框架比較合理。 另外,利用Ibatis可以統一編碼風格,節約開發成本,大家不會再把精力浪費到分頁 連接池 主鍵生成等地方了,可以集中精力進行業務組件的編寫。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章