zoukankan      html  css  js  c++  java
  • 35hibernate_fetch_6_batch_size

    hibernate抓取策略,,batch-szie在<class>上的应用

    batch-size属性,可以批量加载实体类,参见:Classes.hbm.xml
    <class name="Classes" table="t_classes" batch-size="3">
    =============================================================================================
    public void testFetch1() {
            Session session = null;
            try {
                session = HibernateUtils.getSession();
                session.beginTransaction();
                
                List students = session.createQuery("select s from Student s where s.id in(:ids)")
                       .setParameterList("ids"new Object[]{1112131415161718191})
                       .list();
                for (Iterator iter=students.iterator(); iter.hasNext();) {
                    Student  student = (Student)iter.next();
                    System.out.println("student.name=" + student.getName());
                    System.out.println("classes.name=" + student.getClasses().getName());
                }
                session.getTransaction().commit();
            }catch(Exception e) {
                e.printStackTrace();
                session.getTransaction().rollback();
            }finally {
                HibernateUtils.closeSession(session);
            }
        }
    配置batch-size="3"时:<class name="Classes" table="t_classes" batch-size="3">
    Hibernate: select student0_.id as id1_, student0_.name as name1_, student0_.classesid as classesid1_ from t_student student0_ where student0_.id in (? , ? , ? , ? , ? , ? , ? , ? , ? , ?)
    student.name=班级0的学生0
    Hibernate: select classes0_.id as id0_0_, classes0_.name as name0_0_ from t_classes classes0_ where classes0_.id in (?, ?, ?)
    classes.name=班级0
    student.name=班级1的学生0
    classes.name=班级1
    student.name=班级2的学生0
    classes.name=班级2
    student.name=班级3的学生0
    Hibernate: select classes0_.id as id0_0_, classes0_.name as name0_0_ from t_classes classes0_ where classes0_.id in (?, ?, ?)
    classes.name=班级3
    student.name=班级4的学生0
    classes.name=班级4
    student.name=班级5的学生0
    classes.name=班级5
    student.name=班级6的学生0
    Hibernate: select classes0_.id as id0_0_, classes0_.name as name0_0_ from t_classes classes0_ where classes0_.id in (?, ?, ?)
    classes.name=班级6
    student.name=班级7的学生0
    classes.name=班级7
    student.name=班级8的学生0
    classes.name=班级8
    student.name=班级9的学生0
    Hibernate: select classes0_.id as id0_0_, classes0_.name as name0_0_ from t_classes classes0_ where classes0_.id=?
    classes.name=班级9

    ===============================================================================================
    什么都不配置时:发10条<class name="Classes" table="t_classes">
    Hibernate: select student0_.id as id1_, student0_.name as name1_, student0_.classesid as classesid1_ from t_student student0_ where student0_.id in (? , ? , ? , ? , ? , ? , ? , ? , ? , ?)
    student.name=班级0的学生0
    Hibernate: select classes0_.id as id0_0_, classes0_.name as name0_0_ from t_classes classes0_ where classes0_.id=?
    classes.name=班级0
    student.name=班级1的学生0
    Hibernate: select classes0_.id as id0_0_, classes0_.name as name0_0_ from t_classes classes0_ where classes0_.id=?
    classes.name=班级1
    student.name=班级2的学生0
    Hibernate: select classes0_.id as id0_0_, classes0_.name as name0_0_ from t_classes classes0_ where classes0_.id=?
    classes.name=班级2
    student.name=班级3的学生0
    Hibernate: select classes0_.id as id0_0_, classes0_.name as name0_0_ from t_classes classes0_ where classes0_.id=?
    classes.name=班级3
    student.name=班级4的学生0
    Hibernate: select classes0_.id as id0_0_, classes0_.name as name0_0_ from t_classes classes0_ where classes0_.id=?
    classes.name=班级4
    student.name=班级5的学生0
    Hibernate: select classes0_.id as id0_0_, classes0_.name as name0_0_ from t_classes classes0_ where classes0_.id=?
    classes.name=班级5
    student.name=班级6的学生0
    Hibernate: select classes0_.id as id0_0_, classes0_.name as name0_0_ from t_classes classes0_ where classes0_.id=?
    classes.name=班级6
    student.name=班级7的学生0
    Hibernate: select classes0_.id as id0_0_, classes0_.name as name0_0_ from t_classes classes0_ where classes0_.id=?
    classes.name=班级7
    student.name=班级8的学生0
    Hibernate: select classes0_.id as id0_0_, classes0_.name as name0_0_ from t_classes classes0_ where classes0_.id=?
    classes.name=班级8
    student.name=班级9的学生0
    Hibernate: select classes0_.id as id0_0_, classes0_.name as name0_0_ from t_classes classes0_ where classes0_.id=?
    classes.name=班级9
    =============================================================================================
    配置batch-size="5"时:发2条
    <class name="Classes" table="t_classes" batch-size="5">
    Hibernate: select student0_.id as id1_, student0_.name as name1_, student0_.classesid as classesid1_ from t_student student0_ where student0_.id in (? , ? , ? , ? , ? , ? , ? , ? , ? , ?)
    student.name=班级0的学生0
    Hibernate: select classes0_.id as id0_0_, classes0_.name as name0_0_ from t_classes classes0_ where classes0_.id in (?, ?, ?, ?, ?)
    classes.name=班级0
    student.name=班级1的学生0
    classes.name=班级1
    student.name=班级2的学生0
    classes.name=班级2
    student.name=班级3的学生0
    classes.name=班级3
    student.name=班级4的学生0
    classes.name=班级4
    student.name=班级5的学生0
    Hibernate: select classes0_.id as id0_0_, classes0_.name as name0_0_ from t_classes classes0_ where classes0_.id in (?, ?, ?, ?, ?)
    classes.name=班级5
    student.name=班级6的学生0
    classes.name=班级6
    student.name=班级7的学生0
    classes.name=班级7
    student.name=班级8的学生0
    classes.name=班级8
    student.name=班级9的学生0
    classes.name=班级9
  • 相关阅读:
    数据结构与算法分析视频教程全集
    NodeJS测试实例
    从信用卡欺诈模型看不平衡数据分类(1)数据层面:使用过采样是主流,过采样通常使用smote,或者少数使用数据复制。过采样后模型选择RF、xgboost、神经网络能够取得非常不错的效果。(2)模型层面:使用模型集成,样本不做处理,将各个模型进行特征选择、参数调优后进行集成,通常也能够取得不错的结果。(3)其他方法:偶尔可以使用异常检测技术,IF为主
    kaggle 欺诈信用卡预测——Smote+LR
    kaggle 欺诈信用卡预测——不平衡训练样本的处理方法 综合结论就是:随机森林+过采样(直接复制或者smote后,黑白比例1:3 or 1:1)效果比较好!记得在smote前一定要先做标准化!!!其实随机森林对特征是否标准化无感,但是svm和LR就非常非常关键了
    leetcode 437. Path Sum III
    cluster KMeans need preprocessing scale????
    神经网络结构设计 不一定是第一层神经元是输入维度数
    How to handle Imbalanced Classification Problems in machine learning?
    Using SMOTEBoost(过采样) and RUSBoost(使用聚类+集成学习) to deal with class imbalance
  • 原文地址:https://www.cnblogs.com/alamps/p/2635695.html
Copyright © 2011-2022 走看看