浅谈Hibernate中加载的三种类型

一:Hibernate实体对象的加载

比如说:用户和订单的关系是一对多,虽然它们有关联,但是默认是延迟加载Lazy=“true”,最终得到的是代理对象,如果要访问代理对象的属性的话,则会抛出异常,

解决方法:leftjoinfetch迫切抓取连接

selectufromUseruleftjoinfetchOrdero;

二:Hibernate普通属性

默认是:lazy=“false”

如果要改为延迟方法较麻烦

三:Hibernate集合对象

setlistmap默认Lazy=“true”

1:List

 
 
 
  1. Java代码  
  2. <listnamelistname="diarys"table="petDiary"cascade="all"inverse="true"> 
  3. <keycolumnkeycolumn="petId"></key> 
  4. <indexcolumnindexcolumn="listindex"></index> 
  5. <one-to-manyclassone-to-manyclass="com.lovo.po.PetDiary"/> 
  6. </list> 
  7.  
  8. <listnamelistname="diarys"table="petDiary"cascade="all"inverse="true"> 
  9.   <keycolumnkeycolumn="petId"></key> 
  10.   <indexcolumnindexcolumn="listindex"></index> 
  11.   <one-to-manyclassone-to-manyclass="com.lovo.po.PetDiary"/> 
  12. </list> 

2:set

 
 
 
  1. Java代码  
  2. <setnamesetname="orders" 
  3. table="t_order" 
  4. cascade="all" 
  5. inverse="true" 
  6. lazy="true" 
  7. > 
  8. <keycolumnkeycolumn="fk_customer_id"></key> 
  9. <one-to-manyclassone-to-manyclass="Order"/> 
  10. </set> 
  11.  
  12. <setnamesetname="orders" 
  13. table="t_order" 
  14. cascade="all" 
  15. inverse="true" 
  16. lazy="true" 
  17. > 
  18. <keycolumnkeycolumn="fk_customer_id"></key> 
  19. <one-to-manyclassone-to-manyclass="Order"/> 
  20. </set> 

3:map

 
 
 
  1. Java代码  
  2. privateMapschool=newHashMap();  
  3.  
  4. publicMapgetSchool(){  
  5. returnschool;  
  6. }  
  7. publicvoidsetSchool(Mapschool){  
  8. this.school=school;  
  9. }  
  10.  
  11. privateMapschool=newHashMap();  
  12.  
  13. publicMapgetSchool(){  
  14. returnschool;  
  15. }  
  16. publicvoidsetSchool(Mapschool){  
  17. this.school=school;  
 
 
 
  1. Xml代码  
  2. <mapnamemapname="school"table="schools"> 
  3. <keycolumnkeycolumn="pid"not-null="true"/> 
  4. <map-keytypemap-keytype="string"column="indet"/> 
  5. <elementtypeelementtype="float"column="score"/> 
  6. </map> 
  7.  
  8. privateMapschool=newHashMap();  
  9.  
  10. publicMapgetSchool(){  
  11. returnschool;  
  12. }  
  13. publicvoidsetSchool(Mapschool){  
  14. this.school=school;  
  15. }  
  16.  
  17. privateMapschool=newHashMap();  
  18.  
  19. publicMapgetSchool(){  
  20. returnschool;  
  21. }  
  22. publicvoidsetSchool(Mapschool){  
  23. this.school=school;  
 
 
 
  1. Xml代码  
  2. <mapnamemapname="school"table="schools"> 
  3. <keycolumnkeycolumn="pid"not-null="true"/> 
  4. <map-keytypemap-keytype="string"column="indet"/> 
  5. <elementtypeelementtype="float"column="score"/> 
  6. </map> 

key子元素用于映射外键列,而map-key子元素则用于映射Map集合的Key。

【编辑推荐】

  1. Hibernate中generator属性的意义
  2. hibernate Key Generator 主键生成方式
  3. Hibernate的主键生成机制
  4. hibernate的Query cache
  5. Hibernate中hbm的generator属性
THE END