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

iBATIS:“半自動化”的ORM實(shí)現(xiàn)

開發(fā) 后端 自動化
本文講述ORM實(shí)現(xiàn)中Hibernate與ibitas的區(qū)別一覽。iBATIS一詞來源于“internet”和“abatis”的組合,是一個(gè)由Clinton Begin在2001年發(fā)起的開放源代碼項(xiàng)目。ibatis 是一種“半自動化”的ORM實(shí)現(xiàn)。

iBATIS一詞來源于“internet”和“abatis”的組合,是一個(gè)由Clinton Begin在2001年發(fā)起的開放源代碼項(xiàng)目。最初側(cè)重于密碼軟件的開發(fā),現(xiàn)在是一個(gè)基于Java的持久層框架。iBATIS提供的持久層框架包括SQL Maps和Data Access Objects(DAO),同時(shí)還提供一個(gè)利用這個(gè)框架開發(fā)的JPetStore實(shí)例。

相對Hibernate和Apache OJB等“一站式”O(jiān)RM解決方案而言,ibatis 是一種“半自動化”的ORM實(shí)現(xiàn)。

所謂“半自動”,可能理解上有點(diǎn)生澀??v觀目前主流的 ORM,無論 Hibernate 還是Apache OJB,都對數(shù)據(jù)庫結(jié)構(gòu)提供了較為完整的封裝,提供了從 POJO 到數(shù)據(jù)庫表的全套映射機(jī)制。程序員往往只需定義好了POJO 到數(shù)據(jù)庫表的映射關(guān)系,即可通過 Hibernate或者 OJB 提供的方法完成持久層操作。程序員甚至不需要對 SQL 的熟練掌握,Hibernate/OJB 會根據(jù)制定的存儲邏輯,自動生成對應(yīng)的 SQL 并調(diào)用 JDBC 接口加以執(zhí)行。

大多數(shù)情況下(特別是對新項(xiàng)目,新系統(tǒng)的開發(fā)而言),這樣的機(jī)制無往不利,大有一統(tǒng)天下的勢頭。但是,在一些特定的環(huán)境下,這種一站式的解決方案卻未必靈光。

在筆者的系統(tǒng)咨詢工作過程中,常常遇到以下情況:

1. 系統(tǒng)的部分或全部數(shù)據(jù)來自現(xiàn)有數(shù)據(jù)庫,處于安全考慮,只對開發(fā)團(tuán)隊(duì)提供幾條Select SQL(或存儲過程)以獲取所需數(shù)據(jù),具體的表結(jié)構(gòu)不予公開。

2. 開發(fā)規(guī)范中要求,所有牽涉到業(yè)務(wù)邏輯部分的數(shù)據(jù)庫操作,必須在數(shù)據(jù)庫層由存儲過程實(shí)現(xiàn)(就筆者工作所面向的金融行業(yè)而言,工商銀行、中國銀行、交通銀行,都在開發(fā)規(guī)范中嚴(yán)格指定)

3. 系統(tǒng)數(shù)據(jù)處理量巨大,性能要求極為苛刻,這往往意味著我們必須通過經(jīng)過高度優(yōu)化的SQL語句(或存儲過程)才能達(dá)到系統(tǒng)性能設(shè)計(jì)指標(biāo)。

面對這樣的需求,再次舉起 Hibernate 大刀,卻發(fā)現(xiàn)刀鋒不再銳利,甚至無法使用,奈何?恍惚之際,只好再摸出JDBC 準(zhǔn)備拼死一搏……,說得未免有些凄涼,直接使用 JDBC 進(jìn)行數(shù)據(jù)庫操作實(shí)際上也是不錯的選擇,只是拖沓的數(shù)據(jù)庫訪問代碼,乏味的字段讀取操作令人厭煩?!鞍胱詣踊钡膇batis,卻剛好解決了這個(gè)問題。

這里的“半自動化”,是相對Hibernate等提供了全面的數(shù)據(jù)庫封裝機(jī)制的“全自動化”O(jiān)RM 實(shí)現(xiàn)而言,“全自動”O(jiān)RM 實(shí)現(xiàn)了 POJO 和數(shù)據(jù)庫表之間的映射,以及 SQL 的自動生成和執(zhí)行。而ibatis 的著力點(diǎn),則在于POJO 與 SQL之間的映射關(guān)系。也就是說,ibatis并不會為程序員在運(yùn)行期自動生成 SQL 執(zhí)行。具體的 SQL 需要程序員編寫,然后通過映射配置文件,將SQL所需的參數(shù),以及返回的結(jié)果字段映射到指定 POJO。

使用ibatis 提供的ORM機(jī)制,對業(yè)務(wù)邏輯實(shí)現(xiàn)人員而言,面對的是純粹的 Java對象,這一層與通過 Hibernate 實(shí)現(xiàn) ORM 而言基本一致,而對于具體的數(shù)據(jù)操作,Hibernate 會自動生成SQL 語句,而ibatis 則要求開發(fā)者編寫具體的 SQL 語句。

相對Hibernate等“全自動”O(jiān)RM機(jī)制而言,ibatis 以 SQL開發(fā)的工作量和數(shù)據(jù)庫移植性上的讓步,為系統(tǒng)設(shè)計(jì)提供了更大的自由空間。作為“全自動”O(jiān)RM實(shí)現(xiàn)的一種有益補(bǔ)充,“半自動化”O(jiān)RM實(shí)現(xiàn)的ibatis 的出現(xiàn)顯得別具意義。

【編輯推薦】

  1. Hibernate中g(shù)enerator屬性的意義
  2. 淺談在Hibernate中使用Oracle sequence
  3. Hibernate簡括
  4. hibernate的Query cache
  5. Hibernate中hbm的generator屬性
責(zé)任編輯:book05 來源: 163博客
相關(guān)推薦

2018-11-27 11:17:50

半自動化運(yùn)維服務(wù)器

2011-03-22 15:47:14

自動化數(shù)據(jù)庫表結(jié)構(gòu)差異

2016-01-12 10:38:58

HireTeamMat

2020-11-03 06:57:10

MyBatis數(shù)據(jù)庫

2015-10-21 15:08:25

電纜自動化

2024-06-11 10:41:14

2018-02-07 14:41:16

數(shù)據(jù)科學(xué)家數(shù)據(jù)分析數(shù)學(xué)

2019-09-18 15:20:16

MyBatisSQL數(shù)據(jù)庫

2022-07-11 13:43:51

Prometheus監(jiān)控

2015-10-20 17:12:58

SuSE自動化運(yùn)維運(yùn)維

2017-12-17 21:58:18

2024-03-20 13:19:53

2022-02-18 13:12:49

人工智能自動化技術(shù)

2022-02-17 17:37:17

超級自動化人工智能AI

2010-12-06 09:59:58

2020-04-29 11:28:54

智能自動化機(jī)器人流程自動化AI

2010-09-27 09:13:36

Visual Stud

2017-07-21 09:14:21

2023-02-15 08:21:22

2023-04-06 07:09:25

自動化部署Actions
點(diǎn)贊
收藏

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