JAVA面試題(29)

    本文首發於cartoon的博客
    轉載請註明出處:cartoonyu.github.io/cartoon-blo…前端

  • Mybatis 邏輯分頁和物理分頁的區別是什麼?
    • 分頁是爲了節省網絡傳輸的數據量
    • 邏輯分頁是將數據所有加載到內存,再經過後端邏輯控制分頁顯示到前端
    • 物理分頁是在數據庫層面分部分獲取數據,一般狀況下對內存的壓力較邏輯分頁少
  • Mybatis 是否支持延遲加載?延遲加載的原理是什麼?
    • Mybatis支持延遲加載
    • 打開方式
      • 在config文件中打開延遲加載的開關()
      • 將積極加載改成延遲加載()
    • 延遲加載原理
      • 多表關聯查詢只查詢當前表的數據
      • 當須要查詢關聯表的數據時才二次查詢關聯表的數據
  • 說一下 Mybatis 的一級緩存和二級緩存?
    • 一級緩存是在SqlSession上實現的(默認)
      • 一次查詢時,SqlSession查詢數據庫,並將數據緩存
      • 二次查詢時,SqlSession查詢緩存
      • 當使用該SqlSession執行DML操做時,緩存失效
    • 二級緩存是在Mapper上實現的
      • 一次查詢時,數據緩存在Mapper上
      • 使用相同/不一樣SqlSession查詢時,返回Mapper層面的緩存
      • 一樣,當出現DML語句時,緩存失效
  • Mybatis 和 Hibernate 的區別有哪些?
    • 參考地址:blog.csdn.net/wangpeng047…
    • Hibernate全自動,MyBatis半自動
      • Hibernate經過對象關係模型實現對數據庫操做,自動生成sql
      • MyBatis只有基本的字段映射,須要手寫sql
    • Hibernate移植性比MyBatis好
      • Hibernate經過對象關係模型生成sql,所以能根據數據庫不一樣生成相應的sql
      • MyBatis手寫sql,因此會出現sql語法不支持的狀況
    • Hibernate日誌系統比MyBatis完善
    • MyBatis比Hibernate須要關注更多細節
      • MyBatis須要自定義的東西比Hibernate多,所以須要關心更多細節
    • MyBatis在優化sql上比Hibernate方便
      • MyBatis須要手寫sql,因此優化sql語句比較方便
      • Hibernate經過對象關係模型生成sql,因此直接優化sql比較麻煩
    • Hibernate的二級緩存機制比MyBatis完善
相關文章
相關標籤/搜索