博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hibernate 性能优化笔记
阅读量:3571 次
发布时间:2019-05-20

本文共 1006 字,大约阅读时间需要 3 分钟。

注意 session.clear() 的运用

  • 尤其在不断分页循环的时候
  • 在一个大集合中进行遍历,遍历msg,取出其中的含有敏感字符的对象
  • 另一种形式的内存泄漏
  • 面试题:Java 有内存泄漏吗?
    • 语法级别上没有。不用回收内存,由垃圾收集器回收。
    • 实际当中写程序时有。比如打开连接池必须记得关闭、打开文件必须记得关闭,Java 调了 C,C 调了 Windows API,间接产生了内存泄漏。

1+N 问题(面试题)

  • FetchType 设为 lazy
  • @BatchSize,减少SQL语句发出数量,提高效率,但是并没有真正解决问题
  • left join
  • criteria 查询(本质上也是 left join)
  • 但在hibernate 5.2.0中不行,在5.0之前的版本可以

list 和 iterate(主要为了面试)

  • list 取所有
  • iterate 取主键,等用到的时候再根据主键取对象
  • session 中 list 第二次发出,仍回到数据库查询
  • iterate 第二次,首先查找 session 级缓存
  • iterate 方法在 hibernate 5.x 版本已 deprecated

一级缓存、二级缓存、查询缓存(面试)

  • 什么是缓存
  • 什么是一级缓存,session 级别的缓存
  • 什么是二级缓存,SessionFactory 级别的缓存,可以跨越 session 存在
    • 经常被访问
    • 不会经常改动
    • 数量有限
  • 打开二级缓存
    • hibernate.cfg.xml 设定
    • annotation @Cache
true
org.hibernate.cache.EhCacheProvider
  • load 默认使用二级缓存,iterate 默认使用二级缓存
  • list 默认往二级缓存加数据,但是查询的时候不用
  • 如果要 query 用二级缓存,需打开查询缓存,查询缓存只有重复的查询语句才行
    • 调用 Query 的 setCacheble(true) 方法指明使用二级缓存
    • xml 设定
true
  • 缓存算法(纯粹面试
    • LRU Least Recently Used
    • LFU Least Frequently Used(命中率高低)
    • FIFO First In First Out
    • ehcache 设置 memoryStoreEvictionPolicy=”XXX”

转载地址:http://gjjgj.baihongyu.com/

你可能感兴趣的文章
发红包案例
查看>>
java接口
查看>>
java 接口 笔记本简单功能案例
查看>>
java 成员内部类and局部内部类
查看>>
java匿名内部类
查看>>
java类作为成员变量
查看>>
java 接口做成员变量
查看>>
java接口作为类变量,与方法变量
查看>>
matlab访问路径问题
查看>>
matlab创建文件夹与批量移动文件到单一文件夹或者各自文件夹
查看>>
matlab 保存和加载变量
查看>>
matlab uigetfile
查看>>
matlab 各类符号意义
查看>>
mybatis学习及原理解析(二)
查看>>
mybatis学习及原理解析(三)
查看>>
github加速
查看>>
cocos creator 打包原生安卓apk 构建与编译
查看>>
cocos 动态设置刚体位置
查看>>
cocos 微信小游戏,优化包体大小
查看>>
手机相机专业模式介绍
查看>>