MyBATIS(即iBATIS)問題集

  部門準備轉做其他業務(小道消息啊,呵呵) ,技術選型方面準備考慮使用SpringMVC+Spring+iBATIS(第三版以後稱爲"MyBATIS",以下統一稱爲"iBATIS".如果第二版和第三版對比時,稱第三版爲"MyBATIS")。而且,部門準備請另外一部門同事來講解一下iBATIS.藉此機會,我看了一些iBATIS的資料,同時也整理出一些問題。發佈出來,希望大家幫忙解答。(以後這些問題解決了,我也會發布一些文章來跟蹤介紹。)背景介紹完畢,直接上題:

    映射相關:

    iBATIS中,主鍵映射使用的是。 Oracle、MySQL對主鍵自動增加實現方式不同。DB2不清楚如何實現。 在使用Oracle、DB2、MySQL中,該如何處理?

    在iBATIS中如何繼承關係如何實現?

    iBATIS中有映射參數有兩種形式:內聯映射(inline mapping)和外部映射(external mapping)。這兩個有什麼區別?各自的優缺點是什麼?使用時,改如何選擇?

    如何實現動態多列選擇(dynamic-column list selection)?

    在iBATIS的配置文件中,可以使用進行模型類名的簡化。如果多人開發的話,會增加命名衝突等問題發生的可能性。有沒有一個最佳實踐,來提高重用性,同事規避這些問題的發生?

    使用過iBATIS調用存儲過程嗎?該如何整?

    內部實現機制

    據瞭解iBATIS中沒有爲update加鎖。如何解決在高併發情況下的同步問題?

    iBATIS使用單一一個Jar包也能實現功能。不過,據瞭解如果使用cglib這個運行時代碼生成庫,可以提延遲加載的性能。這個的實現原理是什麼?這個增加框架是否推薦使用?爲什麼?

    向數據庫新增數據時,保存後,對象的ID是否會自動的回填到原來的對象中?

    緩存相關:

    據瞭解iBATIS中有四種內置MEMORY、LRU、FIFO、OSCACHE高速緩存類型。如果這四個緩存類型不滿足需求。如何實現擴展高速緩存,實現自己的緩存類型?

    在配置緩存時,iBATIS清除緩存是把所有的緩存都清楚還是隻清楚一個實例模型相關的?

    iBATIS的緩存對於開發人員來說是否是透明的?需要自己編寫和緩存相關的代碼嗎?

    iBATIS中和高速緩存策略相關的最佳實踐是什麼?能否分享一下?

    優化相關:

    iBATIS中也可以懶加載。如何實現"按需加載"?

    iBATIS中有哪些優化策略?有沒有這方面的最佳實踐?

    iBATIS的事務管理器有JDBC、JTA、EXTERNAL三種。如果使用Spring來管理事務的話該如何配置?使用EXTERNAL?

    實踐相關:

    能否用實例說明一下 "N+1查詢"問題 ?如何解決"N+1查詢"問題?

    iBATIS的動態SQL效率如何?如果過多的使用動態SQL,是否會影響效率?

    iBATIS的最佳實踐都有哪些?

 

    其他

    爲什麼不使用MyBATIS(iBATIS的第三版)?

    iBATIS都有哪些擴展點?會對我們的開發工作有何促進?

    與Hibernate對比的一些問題

    Hibernate中,模型對象有瞬時、持久化、脫管和移除四個生命週期。iBATIS的對象有生命週期嗎?分別是什麼?.

    Hibernate中有OpenViewInSession模式,用來應對Session失效(或者是過期)。iBATIS下有這方面的問題嗎?如何應對這個問題?

    在Hibernate中有一級緩存、二級緩存等。在iBATIS中是否也有與Hibernate對應的緩存架構和概念?

    Hibernate中有樂觀鎖和悲觀鎖。在iBATIS中是否也有這方面的機制?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章