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

iBATIS特性之七大方面詳談

開發(fā) 后端
iBATIS特性有哪些呢?什么樣的特性使得iBATIS這么受歡迎呢?那么本文將向你介紹具體的那些特性。

iBATIS特性有哪些呢?正如你所知道的,可以在任何系統(tǒng)中使用iBATIS。像iBATIS這樣一個(gè)框架能夠使你的應(yīng)用從架構(gòu)級(jí)別上開始受益是什么原因呢?來(lái)開始我們的介紹吧。

iBATIS特性1簡(jiǎn)單性

iBATIS被廣泛認(rèn)為是當(dāng)今可用的最簡(jiǎn)單的持久化框架之一。簡(jiǎn)單性的理念根植于iBATIS開發(fā)團(tuán)隊(duì),它在iBATIS的所有開發(fā)目標(biāo)中居于首位。這種簡(jiǎn)單性的取得是因?yàn)閕BATIS直接構(gòu)建于JDBC和SQL之上。iBATIS對(duì)于Java開發(fā)者來(lái)說(shuō)非常簡(jiǎn)單,因?yàn)樗瞬挥镁帉懩敲炊啻a外與JDBC的工作機(jī)制非常相像。幾乎你知道的關(guān)于JDBC的一切都對(duì)iBATIS同樣適用。你幾乎可以這樣認(rèn)為,iBATIS就是以XML的形式來(lái)描述的JDBC代碼。有人說(shuō),iBATIS擁有許多JDBC所沒有的架構(gòu)級(jí)的優(yōu)點(diǎn),這些優(yōu)點(diǎn)我們隨后就將討論。iBATIS對(duì)于數(shù)據(jù)庫(kù)管理員以及SQL程序員來(lái)說(shuō)也非常容易理解。iBATIS配置文件幾乎人人都能讀懂,只要他有SQL編程的經(jīng)驗(yàn)。

iBATIS特性2生產(chǎn)效率

任何一個(gè)優(yōu)秀的框架,其目的都是使得框架的使用者能夠獲得更高的生產(chǎn)效率。一般情況下,框架負(fù)責(zé)處理公共的任務(wù),減少編寫那些像樣板一樣的重復(fù)代碼,以及解決復(fù)雜的架構(gòu)級(jí)的問題。iBATIS在給開發(fā)人員帶來(lái)更高的開發(fā)效率方面做得非常成功。在意大利的Java用戶組(Java Users Group)所做的一個(gè)案例調(diào)查中(參見www.jugsardegna.org/vqwiki/jsp/Wiki?IBatisCaseStudy),F(xiàn)abrizio Gianneschi發(fā)現(xiàn)iBATIS減少了持久層大約62%的代碼量。所以能減少如此之多的代碼量,究其原因是開發(fā)者再不需要編寫繁瑣的JDBC代碼了。SQL語(yǔ)句仍然是硬編碼的,不過就像你在本章之前所看到的,SQL不是問題——問題在于JDBC API,對(duì)于ADO.NET而言也是如此。

iBATIS特性3性能

性能這個(gè)話題無(wú)疑會(huì)引起框架開發(fā)者、框架使用者以及商業(yè)軟件開發(fā)商之間的一場(chǎng)激烈爭(zhēng)論。事實(shí)是,從一個(gè)較低的級(jí)別來(lái)看這個(gè)問題,無(wú)疑所有的框架都會(huì)帶來(lái)一定的性能損失。一般來(lái)說(shuō),如果你比較硬編碼的JDBC代碼和iBATIS代碼,做一個(gè)1,000,000次的for循環(huán),你會(huì)發(fā)現(xiàn)JDBC在性能上的確有一些優(yōu)勢(shì)。幸運(yùn)的是,在現(xiàn)代應(yīng)用開發(fā)中,以上這樣的for循環(huán)帶來(lái)的性能損失并不重要。真正重要的是,你如何從數(shù)據(jù)庫(kù)中獲取數(shù)據(jù),何時(shí)獲取,獲取的頻率又是多少。例如,分頁(yè)查詢之所以能大大提高應(yīng)用的性能就在于,它不會(huì)將可能成千上萬(wàn)條的記錄從數(shù)據(jù)庫(kù)中一次取出。同樣地,使用像懶加載這樣的特性可以避免加載那些在當(dāng)前情況下并不需要的數(shù)據(jù)。另一方面,如果你確定需要加載一份復(fù)雜的對(duì)象圖,涉及到來(lái)自多個(gè)表的大量數(shù)據(jù),如果能僅用一條SQL語(yǔ)句就完成所有對(duì)象的加載顯然可以大大提高效率,iBATIS支持使用這樣的SQL語(yǔ)句。iBATIS支持許多性能優(yōu)化措施,我們將在本章之后的章節(jié)中詳細(xì)討論。就目前而言,最重要的是要知道iBATIS總是能通過一種簡(jiǎn)單的方式來(lái)配置和使用,其性能與JDBC相當(dāng),甚至更好。另一個(gè)需要重點(diǎn)考慮的問題就是,并不是所有的JDBC代碼都是編寫良好的。JDBC API非常復(fù)雜,編寫正確的代碼需要非常小心。不幸的是,大量的JDBC代碼都編寫得相當(dāng)糟糕,因此從較低層次上看甚至還沒有iBATIS工作得好。

iBATIS特性4關(guān)注點(diǎn)分離

在典型的JDBC代碼中,在應(yīng)用的各個(gè)層中都能找到與數(shù)據(jù)庫(kù)相關(guān)(例如獲取連接、遍歷結(jié)果集)的代碼,這并不稀奇。相信大家都見過甚至開發(fā)過這樣糟糕的應(yīng)用——所有的邏輯都在一個(gè)JSP頁(yè)面中完成,連接數(shù)據(jù)庫(kù)、執(zhí)行SQL語(yǔ)句,遍歷結(jié)果集,當(dāng)然還有散落其間的HTML代碼。這樣的代碼簡(jiǎn)直是一個(gè)噩夢(mèng)。在第一章中我們已經(jīng)討論了對(duì)應(yīng)用分層的重要性。我們已經(jīng)看到了如何從一個(gè)較高的角度對(duì)應(yīng)用分層,以及持久層內(nèi)部又是如何進(jìn)一步分層的。iBATIS通過幫助管理所有這些持久化相關(guān)的資源來(lái)支持分層,這些資源包括數(shù)據(jù)庫(kù)連接(database connection)、prepared statement以及結(jié)果集(result set)。iBATIS提供了一組數(shù)據(jù)庫(kù)無(wú)關(guān)的接口以及API,使得應(yīng)用的其它部分能夠通過使用這組接口和API保持與數(shù)據(jù)庫(kù)相關(guān)資源的獨(dú)立性。使用iBATIS,你的代碼總是在直接與嚴(yán)格的對(duì)象打交道,再也不用管那些隨意的結(jié)果集了。iBATIS實(shí)際上使得你難以違背對(duì)應(yīng)用分層這樣的最佳實(shí)踐。

iBATIS特性5明確分工

一些數(shù)據(jù)庫(kù)管理員是如此熱愛他們的數(shù)據(jù)庫(kù),以至于不愿意讓任何其他人來(lái)為數(shù)據(jù)庫(kù)編寫SQL。而有一些人又是如此擅長(zhǎng)編寫SQL,以至于其他人都想讓他們來(lái)做這項(xiàng)工作。無(wú)論是什么原因,在你的開發(fā)團(tuán)隊(duì)中實(shí)現(xiàn)人盡其才總是有利的。如果你的團(tuán)隊(duì)中有人尤其擅長(zhǎng)于編寫SQL,但是對(duì)于Java或C#卻不那么在行,那么就可以讓他們專門編寫SQL。iBATIS使得這種分工成為可能。因?yàn)樵趇BATIS中,SQL語(yǔ)句在很大程度上同應(yīng)用的源代碼是分離的,SQL程序員可以按照SQL原本的方式來(lái)編寫它,而不必?fù)?dān)心有關(guān)SQL字符串連接的問題。即使由相同的開發(fā)者來(lái)編寫Java代碼和SQL,在數(shù)據(jù)庫(kù)性能調(diào)整(performance tune)的過程中也會(huì)有一個(gè)來(lái)自DBA的常見請(qǐng)求,即“顯示出SQL”。用JDBC來(lái)完成此事并不容易,因?yàn)镾QL隱藏得很深,是連接一堆分散的字符串得到的,甚至還可能是在遞歸語(yǔ)句和條件語(yǔ)句中動(dòng)態(tài)地創(chuàng)建的。如果使用對(duì)象關(guān)系映射,情況就更加復(fù)雜了,因?yàn)槟阃ǔ1仨氝\(yùn)行應(yīng)用然后才能log出這些SQL語(yǔ)句,即使你找到了它們,你也根本不能改變它們。iBATIS則提供了充分的自由,使得任何人都可以開發(fā)、觀察并且修改在數(shù)據(jù)庫(kù)中執(zhí)行的SQL語(yǔ)句。

iBATIS特性6可移植性

iBATIS是可移植的。由于它相對(duì)簡(jiǎn)單的設(shè)計(jì),它幾乎可以用任何一種語(yǔ)言在任何一個(gè)平臺(tái)上實(shí)現(xiàn)。書寫本書時(shí),iBATIS支持3種最受歡迎的開發(fā)平臺(tái):Java、Ruby和微軟.NET的C#。

當(dāng)前,配置文件并不完全跨平臺(tái)兼容,但是我們正在計(jì)劃使它們更加兼容。重要的是,概念和方法都是可移植的。這就使你能夠保證你所有的應(yīng)用在設(shè)計(jì)上是一致的。和其他框架相比,iBATIS可以處理更多語(yǔ)言以及更多類型的應(yīng)用,而無(wú)需考慮應(yīng)用設(shè)計(jì)的不同。如果應(yīng)用的一致性對(duì)于你來(lái)說(shuō)很重要的話,使用iBATIS就可以很好地幫你達(dá)到一致性。

iBATIS特性7開源和誠(chéng)實(shí)

開始時(shí)我們說(shuō)本節(jié)有“自吹自擂”之嫌。事實(shí)上,iBATIS是免費(fèi)的開源軟件。無(wú)論你是否使用它,我們都不會(huì)因此而獲得哪怕是一分錢的利益。你已經(jīng)買了本書,所以我們已經(jīng)獲得了我們?cè)摰玫睦?。開源軟件的最大的優(yōu)點(diǎn)之一就是誠(chéng)實(shí)。我們沒有任何理由對(duì)你撒謊。因此下面我們將要做的事在商業(yè)軟件文檔中就是非常罕見的:我們將要討論一些你可能不應(yīng)該使用iBATIS的情況,并且提出一些合適的替代方案。

iBATIS特性就向你介紹到這里,希望通過這樣的講解使你更加清楚的認(rèn)識(shí)iBATIS。

【編輯推薦】

  1. iBATIS動(dòng)態(tài)映射淺析
  2. iBATIS DAO框架淺析
  3. iBATIS的Log機(jī)制淺談
  4. 什么是iBATIS
  5. iBATIS工作原理淺析
責(zé)任編輯:仲衡 來(lái)源: CSDN博客
相關(guān)推薦

2022-04-24 13:54:23

元宇宙虛擬土地VR

2014-04-18 09:06:25

2011-01-13 13:48:52

Android 3.0

2012-12-25 10:05:27

2012-12-26 09:14:40

Windows Ser微軟

2020-01-31 18:56:51

網(wǎng)絡(luò)安全IT安全漏洞

2010-11-09 11:20:12

2018-08-06 15:08:23

JavaSpring編程語(yǔ)言

2017-04-24 11:32:33

工業(yè)大數(shù)據(jù)制造業(yè)

2011-07-04 09:43:05

Office 365云計(jì)算微軟

2015-08-07 09:07:45

Java新特性面向未來(lái)

2010-03-01 14:13:06

2025-05-19 00:06:00

編碼工具CursorAI

2009-12-01 14:35:06

Linux忠告

2018-02-08 09:22:38

Javaweb服務(wù)器

2018-09-10 06:00:12

2011-03-09 09:24:18

2011-11-14 09:58:33

2019-09-18 18:56:34

JavascriptOOP前端

2012-08-06 10:34:26

JavaScript框架
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 日韩精品专区在线影院重磅 | 欧美日韩国产在线观看 | 午夜精品一区二区三区在线观看 | 亚洲www啪成人一区二区麻豆 | 国产综合在线视频 | 91久久精品国产91久久 | 999久久久 | 国产成人精品综合 | 作爱视频免费看 | 美女艹b| 精品久久久久久久久久久久久久 | 91在线第一页| 日韩欧美在线精品 | 欧美成人黄色小说 | 懂色av一区二区三区在线播放 | 成人精品视频在线观看 | 羞羞视频在线观看 | 99久久免费精品国产男女高不卡 | 亚洲综合小视频 | 欧美一区二区三区在线 | 我要看黄色录像一级片 | 亚洲在线一区二区 | 国产九九九 | 亚洲精品自拍 | 操操日| 成人日韩 | 欧美精品一区在线 | 亚洲精品国产电影 | 久久久久免费 | 免费在线色 | 欧美日韩精品一区二区三区四区 | 韩日三级| 欧美午夜一区二区三区免费大片 | 91精品国产91久久久久久 | 久久婷婷香蕉热狠狠综合 | 一级欧美一级日韩片免费观看 | 中文字幕在线一区 | 亚洲精品久久久久久久久久久久久 | 日本午夜网 | 亚洲国产精品久久 | 中文字幕在线观看一区 |