自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Hibernate ibatis全面概括

開(kāi)發(fā) 后端
這里介紹Hibernate和ibatis,Hibernate是十分強(qiáng)大,比較完善的orm框架,不過(guò)這是它的優(yōu)點(diǎn)也是它的缺點(diǎn)。ibatis對(duì)于應(yīng)用的修改,調(diào)試,擴(kuò)充和維護(hù)將會(huì)變得容易自然。

使用ibatis需要自己寫(xiě)SQL時(shí),由于我們的SQL不可能完全符合SQL標(biāo)準(zhǔn),比起Hibernate產(chǎn)生的SQL來(lái),可移植性差。不過(guò)由于我們更改 數(shù)據(jù)庫(kù)的可能性較小,對(duì)我們來(lái)說(shuō)SQL符合標(biāo)準(zhǔn)以便可以在遷移到不同服務(wù)器時(shí)代價(jià)最小并不是十分必要的。另一方面,Hibernate雖然可以屏蔽很多 數(shù)據(jù)庫(kù)間的不同,但是卻很難利用某些數(shù)據(jù)庫(kù)的高級(jí)特性,比如oracle的分析統(tǒng)計(jì)函數(shù)。

Hibernate不適合數(shù)據(jù)庫(kù)模式不規(guī)范,約束不完整,需要大量復(fù)雜查詢的系統(tǒng),同時(shí)Hibernate的學(xué)習(xí)成本較高,完全掌握Hibernate也較困難,風(fēng)險(xiǎn)較大。

自己寫(xiě)框架未必比ibatis的好,穩(wěn)定,強(qiáng)大和可擴(kuò)展。而且自己開(kāi)發(fā)框架也需要較大的工作量。

如果使用dotnet并且要選一個(gè)數(shù)據(jù)層框架,而系統(tǒng)中有相當(dāng)一部分較復(fù)雜的SQL,或數(shù)據(jù)庫(kù)設(shè)計(jì)不合理,臟數(shù)據(jù)多,對(duì)性能和資源要求嚴(yán)格,ibatis 是一個(gè)比較不錯(cuò)的選擇。他的那些缺點(diǎn)并不是致命的,而且也是有一些解決方案的。尤其是,當(dāng)選用了ibatis的dataaccess作為dao框架時(shí),我們可以同時(shí)使用Hibernate,ado.net和datamapper(ibatisnet的核心組件),那樣將會(huì)使風(fēng)險(xiǎn)降到***,并且整個(gè)系統(tǒng)的 框架比較合理。

另外,利用ibatis可以統(tǒng)一編碼風(fēng)格,節(jié)約開(kāi)發(fā)成本,大家不會(huì)再把精力浪費(fèi)到分頁(yè) 連接池 主鍵生成等地方了,可以集中精力進(jìn)行業(yè)務(wù)組件的編寫(xiě)。

綜上: 很多時(shí)候我們要在是自己開(kāi)發(fā)框架和選用第三方框架和選用什么樣的框架問(wèn)題上進(jìn)行綜合考慮??紤]的標(biāo)準(zhǔn)當(dāng)然是項(xiàng)目的當(dāng)前情況和我們希望達(dá)到目的的一個(gè)平衡。

ibatis只是封裝了數(shù)據(jù)訪問(wèn)層,替我們做了部分的對(duì)象關(guān)系映射。但我們的代價(jià)是必須要寫(xiě)xml配置文件,相對(duì)于Hibernate我們還要寫(xiě)很多 SQL.Hibernate通過(guò)工具直接從數(shù)據(jù)庫(kù)模式生成實(shí)體類和基本的配置文件,而且大部分情況下不需要我們寫(xiě)SQL,會(huì)較大的提升開(kāi)發(fā)效率。但這些也 有很多的局限性,尤其是對(duì)環(huán)境的要求較高(數(shù)據(jù)庫(kù)設(shè)計(jì),對(duì)象設(shè)計(jì),團(tuán)隊(duì)的協(xié)作等)。

個(gè)人感覺(jué)ibatis對(duì)項(xiàng)目比較有意義的地方在于它小巧靈活,可擴(kuò)展,封裝了數(shù)據(jù)訪問(wèn)層(事務(wù),緩存,異常,日志),并提供了dao框架支持。

利用ibatis我們可以做到代碼和SQL的分離,只要SQL能夠解決的問(wèn)題,ibatis就能幫我們較容易的解決,同時(shí)也使我們的項(xiàng)目對(duì)某一框架的依賴性變小(因?yàn)閕batis是非侵入性的)。這將極大的降低項(xiàng)目風(fēng)險(xiǎn),減少解決復(fù)雜問(wèn)題的時(shí)間,使項(xiàng)目的維護(hù)變得簡(jiǎn)單。

ibatis對(duì)于應(yīng)用的修改,調(diào)試,擴(kuò)充和維護(hù)將會(huì)變得容易自然。修改時(shí),我們主要修改的是代表模型的實(shí)體對(duì)象,xml配置文件中的SQL,和/或配置文件的resultmap(很多時(shí)候是不需要的)。同時(shí),SQL和代碼分離,我們不用在代碼的stringbuffer的append方法之間尋找需要修改的SQL.配置文件中的SQL便利了我們的調(diào)試和對(duì)SQL的評(píng)審及以后的SQL重用。

利用一些框架在前期一般會(huì)拖慢開(kāi)發(fā)效率。因?yàn)槲覀冃枰冻鰧W(xué)習(xí)成本,很多時(shí)候,使用框架需要寫(xiě)很多配置文件,在使用不熟時(shí)開(kāi)發(fā)速度較慢;同時(shí)利用框架往往使系統(tǒng)代碼量增大,比如model1和model2模型,開(kāi)發(fā)效率應(yīng)該還是model1快,四層的架構(gòu)肯定比兩層的代碼量大。但對(duì)于中后期開(kāi)發(fā)和維護(hù)將會(huì)極大的提高效率。

利用一些較完全的開(kāi)發(fā)框架和代碼生成工具,在前期會(huì)較大的提高開(kāi)發(fā)效率,但在后期常常會(huì)拖慢進(jìn)度,并有可能成為以后維護(hù)的夢(mèng)魘。比如torque生成實(shí)體類和其對(duì)應(yīng)的SQL,雖大幅提高了效率,但修改負(fù)擔(dān)較大。

比較理想的開(kāi)發(fā)方式是使用簡(jiǎn)單框架結(jié)合簡(jiǎn)單的代碼生成工具??蚣芴峁┫到y(tǒng)的基礎(chǔ)服務(wù),并規(guī)范開(kāi)發(fā)??蚣芤环矫嫣峁┝碎_(kāi)發(fā)中某一方面的開(kāi)發(fā)基礎(chǔ)支持,比如數(shù)據(jù)訪問(wèn)層,事務(wù),日志,公用類,異常等。另一方面,也為開(kāi)發(fā)定義了模式,定義了系統(tǒng)的基本輪廓。同時(shí),通過(guò)簡(jiǎn)單的代碼生成工具生成部分低級(jí)的代碼。比如通過(guò)工具從數(shù)據(jù)庫(kù)模式生成實(shí)體類。這些類生成后我們可以自由修改。

Hibernate是十分強(qiáng)大,比較完善的orm框架,不過(guò)這是它的優(yōu)點(diǎn)也是它的缺點(diǎn)。 J2EE系統(tǒng)是否采用Hibernate3,是一個(gè)需要認(rèn)真評(píng)估的問(wèn)題。

要想Hibernate工作的好,數(shù)據(jù)庫(kù)的設(shè)計(jì)必須好。同時(shí)對(duì)于復(fù)雜的數(shù)據(jù)操作同時(shí)需要使用SQL,Hibernate3對(duì)于直接使用SQL的支持比Hibernate2要自然,這一點(diǎn)是可以接受的。

Hibernate比較復(fù)雜,功能強(qiáng)大而靈活,要用好Hibernate確實(shí)不是很簡(jiǎn)單,當(dāng)然spring框架提供了對(duì)Hibernate的封裝,使Hibernate的使用變得簡(jiǎn)單了點(diǎn)。

可以說(shuō)ibatis在任何系統(tǒng)里都適用,但未必是***選擇。不過(guò)ibatis提供的思路是我們應(yīng)該仔細(xì)考慮的。

【編輯推薦】

  1. Hibernate3.1簡(jiǎn)單描述
  2. Hibernate save基礎(chǔ)簡(jiǎn)介
  3. 淺析Hibernate 3二級(jí)緩存基礎(chǔ)
  4. Hibernate流行架構(gòu)淺析
  5. Hibernate update淺談
責(zé)任編輯:佚名 來(lái)源: IT168
相關(guān)推薦

2009-09-22 13:12:25

Hibernateibatis

2009-09-28 17:27:27

Hibernate A

2009-09-21 16:40:42

Hibernate可行

2009-09-24 09:25:10

Hibernate批量

2009-09-25 15:15:54

Hibernate檢索

2009-09-22 13:31:28

Hibernate C

2009-09-28 15:24:38

Hibernate V

2009-09-22 17:55:51

Spring Hibe

2009-09-29 16:29:40

Hibernate查詢

2009-09-22 09:31:15

Hibernate主鍵

2009-09-27 14:33:01

Hibernate批量

2009-09-28 09:56:53

Hibernate屬性

2009-09-24 14:04:25

Hibernate i

2009-09-16 16:55:07

LINQ to XML

2009-09-25 13:18:15

Hibernate數(shù)據(jù)

2009-09-22 09:40:03

cascade和invHibernate

2009-09-23 18:05:48

2009-09-23 13:21:32

Hibernate O

2009-09-22 14:52:55

Hibernate p

2009-09-25 10:22:35

Hibernate多表
點(diǎn)贊
收藏

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