成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

iBATIS的優、缺點及注意事項淺談

開發 后端
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可以統一編碼風格,節約開發成本,大家不會再把精力浪費到分頁 連接池 主鍵生成等地方了,可以集中精力進行業務組件的編寫。

綜上:

很多時候我們要在是自己開發框架和選用第三方框架和選用什么樣的框架問題上進行綜合考慮。考慮的標準當然是項目的當前情況和我們希望達到目的的一個平衡。

iBATIS只是封裝了數據訪問層,替我們做了部分的對象關系映射。但我們的代價是必須要寫xml配置文件,相對于Hibernate我們還要寫很多SQL。Hibernate通過工具直接從數據庫模式生成實體類和基本的配置文件,而且大部分情況下不需要我們寫SQL,會較大的提升開發效率。但這些也有很多的局限性,尤其是對環境的要求較高(數據庫設計,對象設計,團隊的協作等)。 個人感覺iBATIS對項目比較有意義的地方在于它小巧靈活,可擴展,封裝了數據訪問層(事務,緩存,異常,日志),并提供了DAO框架支持。
 
利用iBATIS我們可以做到代碼和SQL的分離,只要SQL能夠解決的問題,iBATIS就能幫我們較容易的解決,同時也使我們的項目對某一框架的依賴性變小(因為iBATIS是非侵入性的)。這將極大的降低項目風險,減少解決復雜問題的時間,使項目的維護變得簡單。

iBATIS對于應用的修改,調試,擴充和維護將會變得容易自然。修改時,我們主要修改的是代表模型的實體對象,xml配置文件中的SQL,和/或配置文件的ResultMap(很多時候是不需要的)。同時,SQL和代碼分離,我們不用在代碼的StringBuffer的append方法之間尋找需要修改的SQL。配置文件中的SQL便利了我們的調試和對SQL的評審及以后的SQL重用。
 
利用一些框架在前期一般會拖慢開發效率。因為我們需要付出學習成本,很多時候,使用框架需要寫很多配置文件,在使用不熟時開發速度較慢;同時利用框架往往使系統代碼量增大,比如Model1和Model2模型,開發效率應該還是Model1快,四層的架構肯定比兩層的代碼量大。 但對于中后期開發和維護將會極大的提高效率。

利用一些較完全的開發框架和代碼生成工具,在前期會較大的提高開發效率,但在后期常常會拖慢進度,并有可能成為以后維護的夢魘。比如torque生成實體類和其對應的SQL,雖大幅提高了效率,但修改負擔較大。

比較理想的開發方式是使用簡單框架結合簡單的代碼生成工具。框架提供系統的基礎服務,并規范開發。框架一方面提供了開發中某一方面的開發基礎支持,比如數據訪問層,事務,日志,公用類,異常等。另一方面,也為開發定義了模式,定義了系統的基本輪廓。同時,通過簡單的代碼生成工具生成部分低級的代碼。比如通過工具從數據庫模式生成實體類。這些類生成后我們可以自由修改。

Hibernate是十分強大,比較完善的ORM框架,不過這是它的優點也是它的缺點。 J2EE系統是否采用Hibernate3,是一個需要認真評估的問題。
 
要想Hibernate工作的好,數據庫的設計必須好。同時對于復雜的數據操作同時需要使用SQL,Hibernate3對于直接使用SQL的支持比Hibernate2要自然,這一點是可以接受的。

Hibernate比較復雜,功能強大而靈活,要用好Hibernate確實不是很簡單,當然Spring框架提供了對Hibernate的封裝,使Hibernate的使用變得簡單了點。 可以說iBATIS在任何系統里都適用,但未必是最好選擇。不過iBATIS提供的思路是我們應該仔細考慮的。

iBATIS的優、缺點及注意事項就談到這里,我們還會繼續關注iBATIS的。

【編輯推薦】

  1. 實例說明iBATIS動態查詢
  2. 避免iBATISN+1查詢的方法
  3. iBATIS級聯解決登錄系統問題
  4. iBATIS標簽詳解
  5. iBATIS是什么?
責任編輯:仲衡 來源: 互聯網轉載
相關推薦

2009-07-16 11:40:23

ibatis自動生成abator

2011-07-04 17:55:59

Qt SDK Windows

2011-04-20 14:52:02

數據庫優化

2011-06-23 11:15:25

SEO網站優化

2011-05-26 11:22:04

SEO

2009-11-09 11:01:01

ibmdwPMP

2011-04-14 11:28:07

光纖

2011-06-27 16:18:41

友情鏈接

2010-10-29 16:33:45

ORACLE存儲過程

2009-06-12 09:46:40

Java String

2009-12-03 14:37:47

安裝phpMyAdmi

2011-05-19 14:29:50

Oracle存儲語法

2021-02-07 07:40:31

Synchronize用法

2021-12-14 14:50:12

synchronizeJava

2011-08-30 10:51:40

MySQL ProxyLua分離

2011-07-22 13:25:10

復印機租賃技巧

2014-01-13 10:50:28

虛擬化存儲

2009-12-15 17:47:17

VSIP

2009-12-30 14:14:39

PPPoA體系

2015-03-11 13:54:25

云技術云應用云存儲
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 在线观看成人av | 中文字幕日韩欧美 | 精品国产精品 | 久久蜜桃精品 | 91在线成人 | 男人的天堂久久 | 青青久久 | 中文字幕乱码视频32 | 久久一区二区视频 | 久久在线视频 | 韩日在线观看视频 | 亚洲精品视频在线播放 | 国产av毛片| 久久久久久国产精品免费免费 | 国产成人99久久亚洲综合精品 | 成人在线视频免费播放 | 一区二区三区日韩 | 乱一性一乱一交一视频a∨ 色爱av | 一级aaaa毛片| 国产高清视频一区 | 日屁网站 | 亚洲久草视频 | 日本精品久久久久久久 | 日本精品在线一区 | 久久国产精品一区二区 | 在线观看中文字幕 | 韩日一区二区三区 | 国产精品中文字幕在线 | 久久久涩| 久久影音先锋 | 一区二区三区在线播放 | 黑人性hd | 久久九九色| 在线视频 欧美日韩 | 色欧美综合| 人成在线视频 | 99久久99久久精品国产片果冰 | av无遮挡| 激情亚洲| 欧美激情视频一区二区三区在线播放 | 日本在线中文 |