zoukankan      html  css  js  c++  java
  • 33hibernate_fetch_4_set_join

    hibernate抓取策略(集合代理的批量抓取)

    设置fetch="join",如:
    <set name="students" inverse="true" cascade="all" fetch="join">

    fetch="join",hibernate会通过select语句使用外连接来加载其关联实体或集合

    此时lazy会失效
    ============================================================================================
        public void testFetch1() {
            Session session = null;
            try {
                session = HibernateUtils.getSession();
                session.beginTransaction();
                Classes classes = (Classes)session.load(Classes.class1);
                System.out.println("classes.name=" + classes.getName());
                for (Iterator iter=classes.getStudents().iterator(); iter.hasNext();) {
                    Student student = (Student)iter.next();
                    System.out.println("student.name=" + student.getName());
                }
                session.getTransaction().commit();
            }catch(Exception e) {
                e.printStackTrace();
                session.getTransaction().rollback();
            }finally {
                HibernateUtils.closeSession(session);
            }
        }    
    测试结果:
    Hibernate: select classes0_.id as id0_1_, classes0_.name as name0_1_, students1_.classesid as classesid3_, students1_.id as id3_, students1_.id as id1_0_, students1_.name as name1_0_, students1_.classesid as classesid1_0_ from t_classes classes0_ left outer join t_student students1_ on classes0_.id=students1_.classesid where classes0_.id=?
    classes.name=班级0
    student.name=班级0的学生0
    student.name=班级0的学生5
    student.name=班级0的学生3
    student.name=班级0的学生1
    student.name=班级0的学生2
    student.name=班级0的学生4
    student.name=班级0的学生6

    -------------------------0 5 3 1 2 4 6----------------------------------------------------

    因为是set,所以是无序的: 
    Hibernate: select classes0_.id as id0_1_, classes0_.name as name0_1_, students1_.classesid as classesid3_, students1_.id as id3_, students1_.id as id1_0_, students1_.name as name1_0_, students1_.classesid as classesid1_0_ from t_classes classes0_ left outer join t_student students1_ on classes0_.id=students1_.classesid where classes0_.id=?
    classes.name=班级0
    student.name=班级0的学生3
    student.name=班级0的学生6
    student.name=班级0的学生1
    student.name=班级0的学生2
    student.name=班级0的学生5
    student.name=班级0的学生0
    student.name=班级0的学生4

    ------------------------- 3  6 1 2 5 0  4-------------------------------------------------
  • 相关阅读:
    Aptana在Eclipse的安装
    spket插件安装并设置JQuery自动提示(转)
    MyEclipse2014安装aptana插件
    GreenDao存储自定义类型对象解决方案(转)
    用PLSQL Developer 查看Oracle的存储过程
    用PLSQL Developer 查看连接因子 tnsnames.ora
    H5前端框架推荐合集 (转)
    10大H5前端框架(转)
    GreenDao3.0简单使用(转)
    Oracle常用查看表结构命令(转)
  • 原文地址:https://www.cnblogs.com/alamps/p/2635692.html
Copyright © 2011-2022 走看看