zoukankan      html  css  js  c++  java
  • hibernate 性能优化之 1+N 问题

    1. 注意 session.clear()的运用,尤其在不断分页查询的时候
      a) 在一个大集合中进行遍历,遍历 msg,去除其中的含有敏感字样的对象
      b) 另外一种形式的内存泄漏

        面试题:Java 有内存泄漏吗?

          语法上没有,因为已经被垃圾回收机制回收了;

          但实际操作中,可能因为Java的操作失误会引起系统的内存泄漏;

          缓存太多没有清除、数据库连接读取未关闭导致的异常等等。
    2. 1+N问题
      a) Lazy,设置 fetch=FetchType.LAZY


      b) BatchSize

    package com.bjsxt.hibernate;
    
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.Id;
    
    import org.hibernate.annotations.BatchSize;
    
    @Entity
    @BatchSize(size=10) //每次批量取10条数据
    public class Category {
      ...
    }

      c) join fetch 查询的时候加上 join fetch

    List<Topic> li = (List<Topic>)session.createQuery("from Topic t left outer join fetch t.category c").list();

      d)  用 Criteria 接口,会自动进行外连接

    List<Topic> li = (List<Topic>)session.createCriteria(Topic.class).list();

    1 + N问题如图所示:

    jar包链接: https://pan.baidu.com/s/1kVskQgf 密码: ujeh

    代码链接: https://pan.baidu.com/s/1i5aDZQ9 密码: s35u

  • 相关阅读:
    乘法DAC一点知识
    #4 判断字符串是否为整数
    #3 不使用循环输出1到100
    #2 判断一个字符串是否包含重复字符
    #22 结语
    #1 组成互不相同且不重复的三位数
    #21 Python异常
    #19 re&jieba模块
    2020国庆正睿笔记
    2019正睿csp-s赛前冲刺
  • 原文地址:https://www.cnblogs.com/ShawnYang/p/6769258.html
Copyright © 2011-2022 走看看