JAVA面试题(29)

发布时间:2019-11-17 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了JAVA面试题(29)脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

    本文首发于cartoon的博客
    转载请注明出处:https://cartoonyu.github.io/c...

  • Mybatis 逻辑分页和物理分页的区别是什么

    • 分页是为了节省网络传输的数据量
    • 逻辑分页是将数据全部加载到内存,再通过后端逻辑控制分页显示到前端
    • 物理分页是在数据库层面分部分获取数据,通常情况下对内存的压力较逻辑分页少
  • Mybatis 是否支持延迟加载?延迟加载的原理是什么?

    • Mybatis支持延迟加载
    • 打开方式

      • config文件中打开延迟加载的开关(<setting name="lazyLoadingEnabled" value="true"/>)
      • 将积极加载改为延迟加载(<setting name="aggressiveLazyLoading" value="false"/>)
    • 延迟加载原理

      • 多表关联查询只查询当前表的数据
      • 当需要查询关联表的数据时才二次查询关联表的数据
  • 说一下 Mybatis 的一级缓存和二级缓存?

    • 一级缓存是在SQLSession上实现的(默认)

      • 一次查询时,SqlSession查询数据库,并将数据缓存
      • 二次查询时,SqlSession查询缓存
      • 当使用该SqlSession执行DML操作时,缓存失效
    • 二级缓存是在MapPEr上实现的

      • 一次查询时,数据缓存在Mapper上
      • 使用相同/不同SqlSession查询时,返回Mapper层面的缓存
      • 同样,当出现DML语句时,缓存失效
  • Mybatis 和 Hibernate 的区别有哪些

    • 参考地址:https://blog.csdn.net/wangpen...
    • 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完善

脚本宝典总结

以上是脚本宝典为你收集整理的JAVA面试题(29)全部内容,希望文章能够帮你解决JAVA面试题(29)所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。