JAVA企業面試題精選 MyBatis 1-4

KopWelkin發表於2017-08-18

2.MyBatis

2.1.什麼是MyBatis?

參考答案:

  MyBatis最早源自Apache基金會的一個開源專案iBatis,2010年這個專案由Apache software foundation遷移到了google code,並且改名為MyBatis;MyBatis是支援普通SQL查詢,儲存過程和高階對映的優秀持久層框架.MyBatis封裝了幾乎所有的JDBC程式碼和引數的手工設定以及結果集的檢索;MyBatis使用簡單的XML或註解做配置和定義對映關係,將Java的POJOs(Plain Old Java Objects)對映城資料庫中的記錄.

2.2.簡述MyBatis的體系結構

參考答案:

  MyBatis體系結構主要由以下幾個關鍵部分;
  1.載入配置
  配置有兩種形式,一種是XML配置檔案,另一種是Java程式碼的註解.MyBatis將SQL的配置資訊載入成為一個個的MappedStatement物件(包括了傳入引數對映配置,執行的SQL語句,結果對映配置),並將其儲存在記憶體中.
  2.SQL解析
  當API介面層接收到呼叫請求時,會接收到傳入SQL的ID和傳入物件(可以使Map,JavaBean或者基本資料型別),MyBatis會根據SQL的ID找到對應的MappedStatement,然後根據傳入引數物件對MappedStatement進行解析,解析後可以得到最終要執行的SQL語句和引數.
  3.SQL執行
  將最終得到的SQL和引數拿到資料庫進行執行,得到運算元據庫的結果.
  4.結果對映
  將運算元據庫的結果按照對映的配置進行轉換,可以轉換成HashMap,JavaBean或者基本資料型別,並將最終結果返回.

2.3.列舉MyBatis的常用API及方法

參考答案:

  在使用MyBatis框架時,主要涉及以下幾個API:
  1.SqlSessionFactoryBuilder該物件負責根據MyBatis配置檔案SqlMapConfig.xml構建SqlSessionFactory例項.
  2.SqlSessionFactory每一個MyBatis的應用程式都以一個SqlSessionFactory物件為核心.該物件負責建立SqlSession物件例項.
  3.SqlSession該物件包含了所有執行SQL操作的方法,用於執行SQL操作的方法,用於執行已對映的SQL語句.

2.4.對於Hibernate和MyBatis的區別與利弊,談談你的看法

參考答案:

  Hibernate與MyBatis的對比:
  1.MyBatis非常簡單易學,與Hibernate相對較複雜,門檻較高;
  2.二者都是比較優秀的開源產品;
  3.當系統屬於二次開發,無法對資料庫結構做到控制和修改,那MyBatis的靈活性將比Hibernate更適合;
  4.系統資料處理量大,效能要求極為苛刻,這往往意味著我們必須通過經過高度優化的SQL語句(或儲存過程)才能達到系統效能設計指標.在這種情況下MyBatis會有更好的可控性和表現;
  5.MyBatis需要手寫sql語句,也可以生成一部分,Hibernate則基本上可以自動生成,偶爾會寫一些hql.同樣的需求,MyBatis的工作量比Hibernate要大很多.類似的,如果涉及到資料庫欄位的修改,Hibernate修改的地方很少,而MyBatis要把那些sql mapping的地方–修改;
  6.MyBatis以資料庫欄位–對應對映得到的po和Hibernate這種物件化對映得到的po是截然不同的,本質區別在於這種po事扁平化的,不像Hibernate對映的po是可以表達立體的物件繼承,聚合等等關係的,這將會直接影響到你的整個軟體系統的設計思路;
  7.Hibernate現在已經是主流OR Mapping框架,從文件的豐富性,產品的完善性,版本的開發速度要強於MyBatis.

相關文章