浅谈Hibernate中加载的三种类型

开发 后端
本文将介绍Hibernate加载的三种类型,包括加载实体对象,普通属性的加载和集合对象的加载。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属性
责任编辑:彭凡 来源: javaeye
相关推荐

2011-01-18 15:35:59

jQueryJavaScriptweb

2010-05-11 14:08:50

MySQL数字类型

2018-12-13 20:14:18

物联网平台物联网IOT

2022-06-20 08:50:16

TypeScript类型语法

2009-11-24 18:15:37

博科资讯管理软件

2009-08-03 17:41:20

ASP.NET Cac

2013-09-02 15:35:00

2010-04-12 16:35:15

Oracle数据库

2010-11-01 11:57:18

DB2客户端

2009-11-13 09:39:48

2020-05-08 07:26:16

物联网平台物联网IOT

2009-07-16 16:23:59

Swing线程

2010-04-02 13:15:01

Oracle跟踪

2009-09-25 15:58:04

Hibernate对象

2009-09-24 11:17:32

Hibernate查询

2009-09-22 14:12:16

Hibernate S

2009-06-23 10:45:18

Hibernate支持

2009-05-07 15:02:42

OracleJoin查询

2021-07-05 05:37:12

5G消息运营商

2009-09-24 17:28:29

Hibernate S
点赞
收藏

51CTO技术栈公众号