ibatis一詞**於「internet」和「abatis」的組合,是乙個由clinton begin在2023年發起的開放源**專案。於2023年6月16號被谷歌託管,改名為mybatis。是乙個基於sql對映支援j**a和·net的持久層框架。
外文名ibatis
來 源
"internet"和"abatis"的組合
發起人clinton begin
時 間
2023年
1 起源
▪ 一站式
▪ 目前主流
▪ 開發
2 半自動化
3 全自動
4 發展
編輯ibatis提供的持久層框架包括sql maps和data access objects(dao),同時還提供乙個利用這個框架開發的jpetstore例項。
相對hibernate和apacheojb等「一站式」orm解決方案而言,ibatis 是一種「半自動化」的orm實現。
ibatis 目前提供了三種語言實現的版本,包括:j**a、.net以及ruby。右圖是ibatis的架構圖:
所謂「半自動化」,可能理解上有點生澀。縱觀目前主流的 orm(物件關係對映),無論 hibernate還是apache ojb,都對資料庫結構提供了較為完整的封裝,提供了從pojo到資料庫表的全套對映機制。程式設計師往往只需定義好了pojo 到資料庫表的對映關係,即可通過 hibernate或者ojb 提供的方法完成持久層操作。程式設計師甚至不需要對 sql 的熟練掌握,hibernate/ojb 會根據制定的儲存邏輯,自動生成對應的 sql 並呼叫 jdbc 介面加以執行。
大多數情況下(特別是對新專案,新系統的開發而言),這樣的機制無往不利,大有一統天下的勢頭。但是,在一些特定的環境下,這種一站式的解決方案卻未必靈光。
在筆者的系統諮詢工作過程中,常常遇到以下情況:
1. 系統的部分或全部資料來自現有資料庫,出於安全考慮,只對開發團隊提供幾條select sql(或儲存過程)以獲取所需資料,具體的表結構不予公開。
2. 開發規範中要求,所有牽涉到業務邏輯部分的資料庫操作,必須在資料庫層由儲存過程實現(就筆者工作所面向的金融行業而言,工商銀行、中國銀行、交通銀行,都在開發規範中嚴格指定)
3. 系統資料處理量巨大,效能要求極為苛刻,這往往意味著我們必須通過經過高度優化的sql語句(或儲存過程)才能達到系統效能設計指標。
面對這樣的需求,再次舉起 hibernate 大刀,卻發現刀鋒不再銳利,甚至無法使用,奈何?恍惚之際,只好再摸出jdbc 準備拼死一搏……,說得未免有些淒涼,直接使用 jdbc進行資料庫操作實際上也是不錯的選擇,只是拖沓的資料庫訪問**,乏味的字段讀取操作令人厭煩。
編輯「半自動化」的ibatis,卻剛好解決了這個問題。這裡的「半自動化」,是相對hibernate等提供了全面的資料庫封裝機制的「全自動化」orm 實現而言,「全自動」orm 實現了 pojo 和資料庫表之間的對映,以及 sql 的自動生成和執行。而ibatis 的著力點,則在於pojo 與 sql之間的對映關係。也就是說,ibatis並不會為程式設計師在執行期自動生成 sql 執行。具體的 sql 需要程式設計師編寫,然後通過對映配置檔案,將sql所需的引數,以及返回的結果字段對映到指定 pojo。
通常在如下場景和條件下,選擇ibatis, 將更有助於發揮ibatis在持久層的優越性:
1. 知道怎樣操作10種以上的資料庫
2. 可配置的caching(包括從屬)
3. 支援datasource、local transaction management和global transaction
4. 簡單的xml配置文件
5. 支援map, collection, list和簡單型別包裝(如integer, string)
6. 支援j**abeans類(get/set 方法)
7. 支援複雜的物件對映(如populating lists, complex object models)
8.物件模型從不完美(不需要修改)
9. 資料模型從不完美(不需要修改)
10. 你已經知道sql,為什麼還要學習其他東西
編輯使用ibatis 提供的orm機制,對業務邏輯實現人員而言,面對的是純粹的 j**a物件,
這一層與通過 hibernate 實現 orm 而言基本一致,而對於具體的資料操作,hibernate
會自動生成sql 語句,而ibatis 則要求開發者編寫具體的 sql 語句。相對hibernate等
「全自動」orm機制而言,ibatis 以 sql開發的工作量大和資料庫移植性上差為代價,為系統
設計提供了更大的自由空間。作為「全自動」orm實現的一種有益補充,ibatis 的出現顯
得別具意義。
編輯ibatis本是apache的乙個開源專案,2023年這個專案由apache software foundation 遷移到了google code,並且改名為mybatis。
AnimateWindow 百度百科
animatewindow 開放分類 程式設計 計算機 api 函式功能 該函式能在顯示與隱藏視窗時能產生特殊的效果。有兩種型別的動畫效果 滾動動畫和滑動動畫。函式原型 bool animatewindow hwnd hwnd,dword dwtime,dword dwflags 引數 hwnd 指...
WCF百度百科
根據微軟官方的解釋,wcf 之前的版本名為 indigo 是使用託管 建立和執行面向服務 service oriented 應用程式的統一框架。它使得開發者能夠建立乙個跨平台的安全 可信賴 事務性的解決方案,且能與已有系統相容協作。wcf是微軟分布式應用程式開發的集大成者,它整合了.net平台下所有...
Mashup 百度百科
mashup是糅合,是當今網路上新出現的一種網路現象,將兩種以上使用公共或者私有資料庫的web應用,加在一起,形成乙個整合應用。一般使用源應用的api介面,或者是一些rss輸出 含atom 作為內容源,合併的web應用用什麼技術,則沒有什麼限制。mashup在geek群體和網際網路玩家之中獲得了極大...