nighty

          折騰的年華
          posts - 37, comments - 143, trackbacks - 0, articles - 0

          無奈只能放棄iBatis

          Posted on 2009-08-21 16:52 寒武紀 閱讀(4328) 評論(24)  編輯  收藏 所屬分類: 心得
              最近的二個項目,由于規模較小,都是十張表之內,而且表關聯非常少。所以用了一下iBatis做為數據庫關系映射,本著減少手寫JDBC代碼的目的,想著可以減少工作量。但是卻遇到了二個令人郁悶的問題。由于環境的限制,使用了jdk1.4.x編譯的iBatis2.3版本,沒有使用最近的。

              第一問題:  其中的一個項目,有一個表為它配置了sql Map的一個delete操作,非常簡單,大概就是delete from xxx where id=#value#這樣的語句,然后用sqlMapClient進行操作,日志打印完全正常,沒有報任何Exception,返回影響記錄數也是正確的。但是進數據庫一看,巍然不動!左查查,右查查,查不出任何毛病。更奇怪的是,數據庫表之間的所有關聯和索引全部取消,還是存在這問題。其它的三個字段比較少的表,這樣配置,同樣的api調用卻正常!這個出問題的數據庫表字段大概20+個左右。

              第二個問題:另一個項目,是二期重構,本來一期也不復雜,全部是使用JDBC實現的,只是有些表的字段太多,JDBC寫到煩,特別是處理一些NULL的插入,還有批處理時異常日志的詳細處理也有點煩。近期做二期升級,就算采用iBatis來減少一些代碼量,于于喜涮涮地搞上去了,代碼的確減少了許多。單元測試也能通過,后來就設置了比較復雜的數據。發現問題的現場如下:在一個業務接口中,一個事務中包含了許多SQL操作,有delete,也有insert,大概十個sql語句左右,全部放在一個batch中執行,整個batch提交一個事務。測試環境提供了31個類似的業務數據,總共執行31個事務,采用for的循環執行調用,每逢索引 i = 10*n  的時候就會卡住,這個操作得花很長時間,最后能通過。后來進行跟蹤,發現是在執行第一個語句delete一個記錄(delete from xxx where id='xx')同樣也是單表刪除。搜索了google,baidu,沒有任何資源,翻遍了文檔沒有任何說明,查了網站FAQ也沒有辦法。于是,只能.......郁悶!

             為什么遇到delete都會有這個問題?不曉得有沒有高手遇到同樣的問題,這里算是總結的同時也提問,希望有遇到相同類型的高手給個解決的方案。如果不行,就得倒回去用JDBC實現,就此iBatis的體驗使用也就擱置,估計以后也不會碰它了。Hibernate就不用了,有點小題大作。
             google了才知道,原來iBatis的書籍、論壇、資料、討論等等相比Hibernate要少很多。學習是很簡單,但是遇到這種細節的時候,又不太愿意花時間去研究源代碼(都是現實所逼,有個球時間呀?)。所以選框架要慎重!!!

          剛進場的時候戲就落幕

          Feedback

          # re: 無奈只能放棄iBatis  回復  更多評論   

          2009-08-21 17:06 by lianyeyu
          應該是沒有設置好。用過,但沒有出現這個問題。

          # re: 無奈只能放棄iBatis  回復  更多評論   

          2009-08-21 17:08 by 長生界
          事先沒搞好調查

          # re: 無奈只能放棄iBatis[未登錄]  回復  更多評論   

          2009-08-21 17:20 by paul
          不會這么慘吧

          # re: 無奈只能放棄iBatis  回復  更多評論   

          2009-08-21 17:28 by 移動12530彩鈴
          不是吧

          # re: 無奈只能放棄iBatis[未登錄]  回復  更多評論   

          2009-08-21 17:45 by a
          其實讀源碼才是最省時間的方法。

          # re: 無奈只能放棄iBatis  回復  更多評論   

          2009-08-21 17:49 by 王兵
          看看ibatis的源碼不就知道了 自己跟蹤一下 把源碼包弄到你們的工程里面去

          # re: 無奈只能放棄iBatis[未登錄]  回復  更多評論   

          2009-08-21 20:30 by aa
          Ibatis也很無奈~

          # re: 無奈只能放棄iBatis  回復  更多評論   

          2009-08-21 20:58 by 隔葉黃鶯
          簡單 google 查不到,開源的東西,源碼都明擺著,留著源碼不看,楞著頭想還不大大的浪費時間嗎!

          # re: 無奈只能放棄iBatis  回復  更多評論   

          2009-08-21 22:04 by leekiang
          要成為高手,就得看源代碼。

          # re: 無奈只能放棄iBatis[未登錄]  回復  更多評論   

          2009-08-22 08:35 by lazy
          ibatis的相關資料是少,不過jdbc的資料雖然多,但是也有很多疑難雜癥會讓人束手無策。
          也不能指望人人都去看源碼,且人人都看得懂源碼。

          # re: 無奈只能放棄iBatis  回復  更多評論   

          2009-08-22 09:31 by 烏黑的大白馬
          不太可能是iBatis的問題,iBatis不過充當了一個集中SQL管理的地方,增刪查改還是靠jdbc實現的啊。我公司的產品幾百張表,幾十個字段的表多得是,從來也沒出現過你這種問題。建議你還是從數據庫、還有事務處理著手,看看是不是設計本身的問題。

          # re: 無奈只能放棄iBatis[未登錄]  回復  更多評論   

          2009-08-22 20:56 by 老姜
          一看就知道是事務的問題了,你用的是什么數據庫,你配置事務了嗎

          # re: 無奈只能放棄iBatis  回復  更多評論   

          2009-08-22 21:44 by 樂蜂網
          事先沒搞好調查

          # re: 無奈只能放棄iBatis  回復  更多評論   

          2009-08-23 19:42 by ibatis
          IBATIS大喊冤枉,這么簡單的框架都用不好:(

          # re: 無奈只能放棄iBatis[未登錄]  回復  更多評論   

          2009-08-24 09:53 by Nicholas
          沒遇到過類似樓主所說的問題,我想可能是配置有問題吧。
          iBATIS還是挺簡單的一個框架,樓主多多研究一下吧。

          # re: 無奈只能放棄iBatis  回復  更多評論   

          2009-08-24 10:47 by littleredboy
          不去學習源代碼,永遠都是菜鳥
          碰到問題就放棄,還是菜鳥
          你這樣發展下去,就是菜鳥

          # re: 無奈只能放棄iBatis  回復  更多評論   

          2009-08-24 17:41 by VIIV
          是不是和數據庫事務設置有關系,我們也用ibatis的框架,一個批處理幾千萬的數據沒有出現這種情況。
          我覺得ibatis還是很好的一個框架,手寫的SQL比較放心些。

          # re: 無奈只能放棄iBatis[未登錄]  回復  更多評論   

          2009-08-24 21:18 by Lv Yuanfang
          沒有任何根據的胡亂猜測。。手寫的sql才放心。。

          # re: 無奈只能放棄iBatis  回復  更多評論   

          2009-08-25 11:35 by zhuxinyu
          我想肯定是lz用錯了, 我們項目一直都用的是ibaties ,都幾年了。 目前沒出現任何不能解決的問題. 仔細找找,切勿因此而影響對iBATIS的看法

          # re: 無奈只能放棄iBatis  回復  更多評論   

          2009-10-11 22:19 by 阿水
          可能是跟事務沒提交有關

          # re: 無奈只能放棄iBatis  回復  更多評論   

          2009-11-01 18:58 by spingNo1
          ibatis的確很傻b,用的人更傻b。

          # re: 無奈只能放棄iBatis  回復  更多評論   

          2010-08-16 08:56 by 游客
          有沒有在最后執行 session.commit()?

          # re: 無奈只能放棄iBatis  回復  更多評論   

          2011-03-18 18:39 by leekiang
          哥們現在回頭再看看這篇文章,覺得還是ibatis的問題嗎?

          # re: 無奈只能放棄iBatis  回復  更多評論   

          2012-05-16 11:38 by 王鵬飛
          ibatis一直在用,沒有那樣的問題
          主站蜘蛛池模板: 三门县| 彩票| 九龙县| 开化县| 大埔县| 日土县| 八宿县| 南宫市| 色达县| 东方市| 招远市| 页游| 临澧县| 黄浦区| 房产| 临武县| 太原市| 洱源县| 星座| 尉氏县| 华蓥市| 虹口区| 平昌县| 商都县| 怀远县| 驻马店市| 鹿泉市| 抚顺市| 太原市| 抚松县| 旌德县| 德清县| 政和县| 蓬莱市| 古交市| 白玉县| 连云港市| 西乌| 临桂县| 海淀区| 潼南县|