Hibernate集合类映射.docx

上传人:小飞机 文档编号:3157989 上传时间:2023-03-11 格式:DOCX 页数:43 大小:44.69KB
返回 下载 相关 举报
Hibernate集合类映射.docx_第1页
第1页 / 共43页
Hibernate集合类映射.docx_第2页
第2页 / 共43页
Hibernate集合类映射.docx_第3页
第3页 / 共43页
Hibernate集合类映射.docx_第4页
第4页 / 共43页
Hibernate集合类映射.docx_第5页
第5页 / 共43页
亲,该文档总共43页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《Hibernate集合类映射.docx》由会员分享,可在线阅读,更多相关《Hibernate集合类映射.docx(43页珍藏版)》请在三一办公上搜索。

1、Hibernate集合类映射Hibernate集合类映射 1 Java 集合类介绍 Java中的集合类用于存储一组对象,其中的每一个对象称之为元素。Java.util包提供经常使用的java集合类有ArrayList、Hashset、HashMap、HashTable等。这些类都是java.util.Collection和java.util.Map接口的一些实现类。java.util.Collection是顶层的一个接口类。java.util.List、java.util.Set、java.util.StoreSet是三个继承Collection接口的子接口。而常用的java.util.Vec

2、tor、java.util.ArrayList、java.util.HashSet、java.util.TreeSet等则是上述三个子接口的实现类。java.util.Map也是最顶层的接口类,该类只有一个子接口即java.util.SortedMap,另外java提供了Map的多个实现类,如java.util.HashMap、java.util.HashTable、java.util.TreeMap等。 Java集合类主要分三种类型: Set:集合。元素不按照特定方式排序,并且不可有重复 List:集合。元素按照索引位置排序,可以有重复 Map:集合。每个元素由一个键值对组成,键对象不能重复

3、,但是值对象 可以重复 Set s = new HashSet; Iterator itr = s.itorator; /获取HashSet 对象的循环指示器 While System.out,println(String) itr.next ); List a = new ArrayList; For(int i=0; i=a.size;i+) /根据ArrayList对象的索引值循环读取 System.out,println(i+”:” + (String) a.get(i) ); Map h = new hashMap; h.put(“001” , “Hibernate”); h.put

4、(“002”,”Struts”); h.put(“003”, “Spring”); Iterator itr_key = h.keySet.iterator; /获取HashMAp对象的键集合的循环指示器 While(itr_key.hasNext) String key=(String)itr_key.next; System.out,println(key+ “ :”+(String) h.next(key) ); 集合类的使用方式总结: Set:与Iterator接口结合使用,使用循环指示器循环读取Set集合中的元素 List:使用元素索引值顺序读取List集合中的元素 Map:首先使用

5、循环指示器获取Map的键集合中的键对象,然后通过键对象读取值对象。 2 Hibernate的集合类映射 根据java集合类的特点,Hibernate中可以分为如下几种集合类映射: :无序,通常用于一对多或多对多关联关系映射。 :有序,必须要有一个索引字段。 :无序,必须要有一个映射关键字字段。 :有序,必须要有一个索引字段。 :有序,必须要有一个索引字段 不同的接口类需要映射到不同的Hibernate集合类映射元素 集合类接口 Java.util.Set Java.util.Collection Java.util.Map Java.util.StoreSet Java.util.StoreM

6、ap 常用实现类 Java.util.ArrayList Java.util.Vector Java.util.HashSet Java.util.ArrayList Java.util.HashMap Java.util.Hashtable Java.util.TreeSet Java.util.TreeMap 映射元素 3 集合类映射的定义 集合类映射的一般定义格式: import java.util.List; import java.util.Map;import java.util.Set; 1. 2. 3. 4. 5. 6. 7. 8. public class Collectio

7、nMapping private int id; private String name; private Set setValues; private List listValues; private String arrayValues; private Map mapValues; public String getArrayValues return arrayValues; 9. public void setArrayValues(String arrayValues) 10. this.arrayValues = arrayValues; 11. 12. public int g

8、etId return id; 13. public void setId(int id) this.id = id; 14. public List getListValues return listValues; 15. public void setListValues(List listValues) 16. this.listValues = listValues; 17. 18. public Map getMapValues return mapValues; 19. public void setMapValues(Map mapValues) 20. this.mapValu

9、es = mapValues; 21. 22. public Set getSetValues return setValues; 1. 2. 3. 4. !DOCTYPE hibernate-mapping PUBLIC -/Hibernate/Hibernate Mapping DTD 3.0/EN 5. 6. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 4 Hibernate关联关系映射目录 单向关联 一对一外键单向关联 一对一主键单向关联 一对一连接表单向关联 一对多外键单向关联 一

10、对多连接表单向关联 多对一外键单向关联 多对一连接表单向关联 多对多单向关联 双向关联 一对一外键双向关联 一对一主键双向关联 一对一连接表双向关联 一对多外键双向关联 一对多连接表双向关联 多对多双向关联 41 一对一外键单向关联 模型一个人对应一个地址 实体: public class Person private int personid; private String name; private int age; private Address address; public class Address private int addressid; private String add

11、ressdetail; 表模型 address +-+-+-+-+-+-+ | Field | Type | Null | Key | Default | Extra | +-+-+-+-+-+-+ | addressid | int(11) | NO | PRI | NULL | auto_increment | | addressdetail | varchar(255) | YES | | NULL | | +-+- +-+-+-+-+ person; +-+-+-+-+-+-+ | Field | Type | Null | Key | Default | Extra | +-+-+-

12、+-+-+-+ | personid | int(11) | NO | PRI | NULL | auto_increment | | name | varchar(255) | YES | | NULL | | | age | int(11) | YES | | NULL | | | addressId | int(11) | YES | UNI | NULL | | +- +-+-+-+-+-+ 映射方法: 在Person中添加Address属性,映射配置为: 42一对一主键单向关联 1-1的关联可以基于主键关联,但基于主键关联的持久化类不能拥有自己的主键生成策略,它的主键由关联类负责生成

13、。另外,增加one-to-one元素来关联属性,必须为one-to-one元素增加constrained=true属性,表明该类主键由关联类生成。 模型: 一个人对应一个地址 实体: public class Person private int personid; private String name; private int age; private Address address; public class Address private int addressid; private String addressdetail; 表模型 address +-+-+-+-+-+-+ | F

14、ield | Type | Null | Key | Default | Extra | +-+-+-+-+-+-+ | addressid | int(11) | NO | PRI | NULL | auto_increment | | addressdetail | varchar(255) | YES | | NULL | | +-+- +-+-+-+-+ person; +-+-+-+-+-+-+ | Field | Type | Null | Key | Default | Extra | +- +-+-+-+-+-+ | personid | int(11) | NO | PRI

15、| NULL | auto_increment | | name | varchar(255) | YES | | NULL | | | age | int(11) | YES | | NULL | | | addressId | int(11) | YES | UNI | NULL | | +- +-+-+-+-+-+ 映射方法:在Person中配置id生成策略为: address . address 43 一对一连接表单向关联 这种情况很少见,但Hibernate同样允许采用连接表关联1-1.有连接表的1-1同样只需要将N-1的many-to-one元素增加unique=true属性即可。

16、 表结构 address; +-+-+-+-+-+-+ | Field | Type | Null | Key | Default | Extra | +-+-+-+-+-+-+ | addressid | int(11) | NO | PRI | NULL | auto_increment | | addressdetail | varchar(255) | YES | | NULL | | +-+-+-+-+-+-+ join; +-+-+-+-+-+-+ | Field | Type | Null | Key | Default | Extra | +-+-+-+-+-+-+ | per

17、sonid | int(11) | NO | PRI | | | | address11tab | int(11) | YES | UNI | NULL | | +-+-+-+-+-+-+ person; +-+-+-+-+-+-+ | Field | Type | Null | Key | Default | Extra | +-+-+-+-+-+-+ | personid | int(11) | NO | PRI | NULL | auto_increment | | name | varchar(255) | YES | | NULL | | | age | int(11) | YES

18、| | NULL | | +-+-+-+-+-+-+ 映射方法:在Person中添加Address属性,映射配置为: public class Person private int personid; private String name; private int age; private Address address; public class Address private int addressid; private String addressdetail; 44 一对多外键单向关联 这种情况很少见,但Hibernate同样允许采用连接表关联1-1.有连接表的1-1同样只需要将N-

19、1的many-to-one元素增加unique=true属性即可。 模型介绍 一个人对应多个地址,比如家庭地址、公司地址。 实体 public class Person1nfk implements Serializable private int personid; private String name; private int age; private Set addresses=new HashSet; public class Address1nfk implements Serializable private int addressid; private String addre

20、ssdetail; 表模型 address; +-+-+-+-+-+-+ | Field | Type | Null | Key | Default | Extra | +-+-+-+-+-+-+ | addressid | int(11) | NO | PRI | NULL | auto_increment | | addressdetail | varchar(255) | YES | | NULL | | | personid | int(11) | YES | MUL | NULL | | +-+-+-+-+-+-+ person; +-+-+-+-+-+-+ | Field | Ty

21、pe | Null | Key | Default | Extra | +-+-+-+-+-+-+ | personid | int(11) | NO | PRI | NULL | auto_increment | | name | varchar(255) | YES | | NULL | | | age | int(11) | YES | | NULL | | +-+-+-+-+-+-+ 映射方法:在实体类Person里面添加Address的集合,即可形成一对多关系。 /hibernate-mapping 45 一对多连接表单向关联 模型介绍 一个人对应多个地址,比如家庭地址、公司地址。 实体 public class Person1ntab private int personid; private String name; private int age; private Set addresses=new HashSet; pu

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号