JAVA企業面試題精選 MyBatis 1-4
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.
相關文章
- 轉載:JAVA企業面試題精選 OOP 1-10Java面試題OOP
- 轉載:JAVA企業面試題精選 OOP 11-20Java面試題OOP
- 轉載:JAVA企業面試題精選 OOP 21-24Java面試題OOP
- 轉載:JAVA企業面試題精選 Java基礎 41-50Java面試題
- 轉載:JAVA企業面試題精選 Java基礎 31-40Java面試題
- 轉載:JAVA企業面試題精選 Java基礎 1-10Java面試題
- 轉載:JAVA企業面試題精選 Java基礎 11-20Java面試題
- 轉載:JAVA企業面試題精選 Java基礎 21-30Java面試題
- 轉載:JAVA企業面試題精選 資料庫1-10Java面試題資料庫
- 轉載: JAVA企業面試題精選 資料庫11-20Java面試題資料庫
- Java併發面試題精選Java面試題
- 最新精選Java面試題,附答案!Java面試題
- 2021精選 Java面試題附答案(一)Java面試題
- iOS面試題精選iOS面試題
- 精選30道Java多執行緒面試題Java執行緒面試題
- 精選乾貨:Java精選筆試題附答案Java筆試
- mybatis面試題MyBatis面試題
- MyBatis 面試題MyBatis面試題
- Java就業企業面試問題-電商專案Java就業面試
- java面試-mybatis篇Java面試MyBatis
- MySQL精選60道面試題 ( 含答案 )MySql面試題
- 「面試必問」leetcode高頻題精選面試LeetCode
- 26個精選的JavaScript面試問題JavaScript面試
- 防火牆企業面試題iptalbes Linux面試題分享防火牆面試題Linux
- 入職大廠,齊姐精選的 9 道 Java 集合面試題Java面試題
- 100家IT 名企面試必考面試題java系列面試題Java
- 面試精選之Promise面試Promise
- 27道Redis精選面試題,你會做幾題?Redis面試題
- mybatis常見面試題MyBatis面試題
- 2018年--阿里大資料面試題(部分精選)阿里大資料面試題
- 【週刊-1】三年大廠面試官-面試題精選及答案面試題
- Java面試高頻題精選300道題,一份通往阿里的必備指南pdfJava面試阿里
- 面試精選之http快取面試HTTP快取
- BATM面試Java崗:精選200+面試題及答案、6大重點規劃和經驗總結BATJava面試題
- 從1.6W名面試者中收集的Java面試題精選彙總(內附知識腦圖)Java面試題
- Java面試整理(精簡版)Java面試
- 金三銀四面試季—20道精選JVM重點面試問題!面試JVM
- 2018名企校招筆試真題精選技術篇筆試
- Python企業面試題3 —— 基礎篇Python面試題