hibernate框架学习之数据抓取(加载)策略helloworld

package cn.itcast.h3.query.hql;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;

import cn.itcast.h3.query.hql.vo.TeacherModel;
import cn.itcast.util.HibernateUtil;

public class MainRelaApp {
    //fetch="select" lazy="false"
    void selectFalse(){
        Session s = HibernateUtil.getSession();
        
        Query q = s.createQuery("from TeacherModel");
        
        List<TeacherModel> queryList  = q.list();
        System.out.println(queryList.get(0).getStudents().size());
        System.out.println(queryList.get(0).getStudents());
        
        s.close();
    }
    //fetch="select" lazy="true"
    void selectTrue(){
        Session s = HibernateUtil.getSession();
        
        Query q = s.createQuery("from TeacherModel");
        
        List<TeacherModel> queryList  = q.list();
        System.out.println(queryList.get(0).getStudents());
        System.out.println(queryList.get(0).getStudents().size());
        
        s.close();
    }
    //fetch="select" lazy="extra"
    void selectExtra(){
        Session s = HibernateUtil.getSession();
        
        Query q = s.createQuery("from TeacherModel");
        
        List<TeacherModel> queryList  = q.list();
        System.out.println(queryList.get(0).getStudents());
        System.out.println(queryList.get(0).getStudents().size());
        
        s.close();
    }
    //fetch="subselect" lazy="false"
    void subselectFlase(){
        Session s = HibernateUtil.getSession();
        
        Query q = s.createQuery("from TeacherModel");
        
        List<TeacherModel> queryList  = q.list();
        System.out.println(queryList.get(0).getStudents());
        System.out.println(queryList.get(0).getStudents().size());
        
        s.close();
    }
    //fetch="subselect" lazy="true"
    void subselectTrue(){
        Session s = HibernateUtil.getSession();
        
        Query q = s.createQuery("from TeacherModel");
        
        List<TeacherModel> queryList  = q.list();
//        System.out.println(queryList.get(0).getStudents().size());
        System.out.println(queryList.get(0).getStudents());
        
        s.close();
    }
    //fetch="subselect" lazy="extra"
    void subselectExtra(){
        Session s = HibernateUtil.getSession();
        
        Query q = s.createQuery("from TeacherModel");
        
        List<TeacherModel> queryList  = q.list();
        System.out.println(queryList.get(0).getStudents().size());
        System.out.println(queryList.get(0).getStudents());
        
        s.close();
    }
    //fetch="subselect" lazy="extra"  Query-》OID  load get
    void subselectExtra2(){
        Session s = HibernateUtil.getSession();
        
        Query q = s.createQuery("from TeacherModel where uuid = 1");
        
        List<TeacherModel> queryList  = q.list();
        System.out.println(queryList.get(0).getStudents().size());
        System.out.println(queryList.get(0).getStudents());
        
        s.close();
    }
    //fetch="join" lazy="false"
    void joinFalse(){
        Session s = HibernateUtil.getSession();
        
        Query q = s.createQuery("from TeacherModel");
        
        List<TeacherModel> queryList  = q.list();
        System.out.println(queryList.get(0).getStudents().size());
        System.out.println(queryList.get(0).getStudents());
        
        s.close();
    }
    //fetch="join" lazy="true"
    void joinTrue(){
        Session s = HibernateUtil.getSession();
        
        Query q = s.createQuery("from TeacherModel");
        
        List<TeacherModel> queryList  = q.list();
        System.out.println(queryList.get(0).getStudents().size());
        System.out.println(queryList.get(0).getStudents());
        
        s.close();
    }
    //fetch="join" lazy="extra"
    void joinExtra(){
        Session s = HibernateUtil.getSession();
        
        Query q = s.createQuery("from TeacherModel");
        
        List<TeacherModel> queryList  = q.list();
        System.out.println(queryList.get(0).getStudents().size());
        System.out.println(queryList.get(0).getStudents());
        
        s.close();
    }
    //fetch="join" lazy="extra" get  OID
    void joinExtra2(){
        Session s = HibernateUtil.getSession();
        
        TeacherModel tm = (TeacherModel) s.get(TeacherModel.class, 2L);
        System.out.println(tm.getStudents().size());
        System.out.println(tm.getStudents());
        s.close();
    }
    //批量抓取策略
    void batchQuery(){
        Session s = HibernateUtil.getSession();
        
        Query q = s.createQuery("from TeacherModel");
        
        List<TeacherModel> queryList  = q.list();
//        System.out.println(queryList.get(0).getStudents().size());
//        System.out.println(queryList.get(0).getStudents());
        
        s.close();
    }
    public static void main(String[] args) {
        new MainRelaApp().batchQuery();
    }
}
package cn.itcast.h3.query.hql;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;

import cn.itcast.h3.query.hql.vo.StudentModel;
import cn.itcast.util.HibernateUtil;

//从关联数据检索策略
public class SubRelaApp {
    //fetch="select" lazy="false"
    void selectFlase(){
        Session s = HibernateUtil.getSession();
        
        Query q = s.createQuery("from StudentModel");
        
        List<StudentModel> queryList  = q.list();
        System.out.println(queryList.get(0).getTeacher());
        
        s.close();
    }
    //fetch="select" lazy="proxy"
    void selectProxy(){
        Session s = HibernateUtil.getSession();
        
        Query q = s.createQuery("from StudentModel");
        
        List<StudentModel> queryList  = q.list();
//        System.out.println(queryList.get(0).getTeacher());
//        System.out.println(queryList.get(11).getTeacher());
//        System.out.println(queryList.get(21).getTeacher());
        
        s.close();
    }
    //fetch="join" lazy="false"
    void joinFalse(){
        Session s = HibernateUtil.getSession();
        
        Query q = s.createQuery("from StudentModel");
        
        List<StudentModel> queryList  = q.list();
        System.out.println(queryList.get(0).getTeacher());
        System.out.println(queryList.get(11).getTeacher());
        System.out.println(queryList.get(21).getTeacher());
        
        s.close();
    }
    //fetch="join" lazy="proxy"
    void joinProxy(){
        Session s = HibernateUtil.getSession();
        
        Query q = s.createQuery("from StudentModel");
        
        List<StudentModel> queryList  = q.list();
        System.out.println(queryList.get(0).getTeacher());
        System.out.println(queryList.get(11).getTeacher());
        System.out.println(queryList.get(21).getTeacher());
        
        s.close();
    }
    //fetch="join" lazy="proxy" 使用OID查询
    void joinProxy2(){
        Session s = HibernateUtil.getSession();
        
        StudentModel sm = (StudentModel) s.get(StudentModel.class, 4L);
        System.out.println(sm.getTeacher());
        
        s.close();
    }
    
    //批量加载
    void batchQuery(){
        Session s = HibernateUtil.getSession();
        
        Query q = s.createQuery("from StudentModel");
        
        List<StudentModel> queryList  = q.list();
//        System.out.println(queryList.get(0).getTeacher());
//        System.out.println(queryList.get(11).getTeacher());
//        System.out.println(queryList.get(21).getTeacher());
        
        s.close();
    }
    public static void main(String[] args) {
        new SubRelaApp().batchQuery();
    }
}

 TeacherModel.hbm.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
        '-//Hibernate/Hibernate Mapping DTD 3.0//EN'
        'http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd'>
<hibernate-mapping>
    <class name="cn.itcast.h3.query.hql.vo.TeacherModel" table="tbl_teacher" lazy="false">
        <id name="uuid" column="uuid">
            <generator class="native" />
        </id>

        <property name="teacherName"/>
        <property name="nick"/>
        
        <set
            fetch="select"
            lazy="false" 
            batch-size="5"
            name="students"
            >
            <key column="teacherUuid"/>
            <one-to-many class="cn.itcast.h3.query.hql.vo.StudentModel"/>
        </set>
    </class>
</hibernate-mapping>
原文地址:https://www.cnblogs.com/xyhero/p/9351960.html