Hibernate检索策略学习之--立即加载

所谓立即加载,是在读取查询对象时,把和查询对象所有有关联的数据全部查出来(包括有关联的对象的关联对象),这种方式是效率最慢的,但好处是只需要一次数据库连接,就可以读取出全部数据,如果数据库连接资源紧张,可以考虑使用

我们有三个实体对象Student,Team,Cerificate

其中Student和Team是1对1的关系,采用主键关联的方式(Student的id和Certificate的id保持一致) 
        Team和Student是一对多的关系(反之为1对多)

在Mysql中运行以下脚本,建立数据库

 



CREATE   TABLE  certificate (
  id 
varchar ( 100 NOT   NULL   default   '' ,
  description 
varchar ( 100 default   '' ,
  
PRIMARY   KEY   (id)
);





CREATE   TABLE  student (
  team_id 
varchar ( 100 default   '' ,
  id 
varchar ( 100 NOT   NULL   default   '' ,
  name 
varchar ( 20 default   '' ,
  cardId 
varchar ( 20 NOT   NULL   default   '' ,
  age 
int ( 11 default   ' 0 ' ,
  
PRIMARY   KEY   (id)
);






CREATE   TABLE  team (
  id 
varchar ( 100 NOT   NULL   default   '' ,
  teamName 
varchar ( 100 default   '' ,
  
PRIMARY   KEY   (id)
);



INSERT   INTO  certificate  VALUES  ( ' 1 ' , ' 110108 ' );
INSERT   INTO  certificate  VALUES  ( ' 2 ' , ' 110109 ' );

INSERT   INTO  student  VALUES  ( ' 1 ' , ' 1 ' , ' tomclus ' , ' 2006m ' , 33 );
INSERT   INTO  student  VALUES  ( ' 2 ' , ' 2 ' , ' tom ' , ' 2007m ' , 22 );
INSERT   INTO  team  VALUES  ( ' 1 ' , ' team1 ' );

 

建立对应的Pojo对象

 


package  Search.immediately;

public   class  Certificate  ... {
    
private String id;
    
private String description;
    
private Student stu;

    
public Student getStu() ...{
        
return stu;
    }


    
public void setStu(Student stu) ...{
        
this.stu = stu;
    }



    
public String getDescription() ...{
        
return description;
    }


    
public void setDescription(String description) ...{
        
this.description = description;
    }


    
public String getId() ...{
        
return id;
    }


    
public void setId(String id) ...{
        
this.id = id;
    }

}




package  Search.immediately;

import  java.util.HashSet;
import  java.util.Set;


public   class  Team  ... {
    
private String id;
    
private Set students=new HashSet();
    
private String teamName;
    
private Set tests;
  
    
public Set getTests() ...{
        
return tests;
    }

 
    
public void setTests(Set tests) ...{
        
this.tests = tests;
    }


    
public String getId() ...{
        
return id;
    }


    
public void setId(String id) ...{
        
this.id = id;
    }


    
public String getTeamName() ...{
        
return teamName;
    }


    
public void setTeamName(String name) ...{
        
this.teamName = name;
    }


    
public Set getStudents() ...{
        
return students;
    }


    
public void setStudents(Set students) ...{
        
this.students = students;
    }

}




package  Search.immediately;

public   class  Certificate  ... {
    
private String id;
    
private String description;
    
private Student stu;

    
public Student getStu() ...{
        
return stu;
    }


    
public void setStu(Student stu) ...{
        
this.stu = stu;
    }



    
public String getDescription() ...{
        
return description;
    }


    
public void setDescription(String description) ...{
        
this.description = description;
    }


    
public String getId() ...{
        
return id;
    }


    
public void setId(String id) ...{
        
this.id = id;
    }

}

 

建立对应的hbm文件

Student.hbm.xml

<? xml version="1.0" encoding="utf-8" ?>
<! DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
>
<!--  
    Mapping file autogenerated by MyEclipse - Hibernate Tools
-->
< hibernate-mapping  package ="Search.immediately"   >
    
<!--  设置非延迟加载  -->
    
< class  name ="Student"  table ="student"  lazy ="false" >
       

你可能感兴趣的:(Hibernate,mysql,xml,MyEclipse,脚本)