Hibernate集合类映射.docx

上传人:b****7 文档编号:10428424 上传时间:2023-02-11 格式:DOCX 页数:46 大小:25.97KB
下载 相关 举报
Hibernate集合类映射.docx_第1页
第1页 / 共46页
Hibernate集合类映射.docx_第2页
第2页 / 共46页
Hibernate集合类映射.docx_第3页
第3页 / 共46页
Hibernate集合类映射.docx_第4页
第4页 / 共46页
Hibernate集合类映射.docx_第5页
第5页 / 共46页
点击查看更多>>
下载资源
资源描述

Hibernate集合类映射.docx

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

Hibernate集合类映射.docx

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.Vector、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:

集合。

每个元素由一个键值对(key-value)组成,键对象不能重复,但是值对象

可以重复

Sets=newHashSet();

Iteratoritr=s.itorator();//获取HashSet对象的循环指示器

While(itr.hasNext()){

System.out,println((String)itr.next());

}

Lista=newArrayList();

For(inti=0;i<=a.size();i++){//根据ArrayList对象的索引值循环读取

System.out,println(i+”:

”+(String)a.get(i));

}

Maph=newhashMap();

h.put(“001”,“Hibernate”);

h.put(“002”,”Struts”);

h.put(“003”,“Spring”);

Iteratoritr_key=h.keySet().iterator();//获取HashMAp对象的键集合的循环指示器

While(itr_key.hasNext()){

Stringkey=(String)itr_key.next();

System.out,println(key+“:

”+(String)h.next(key));

}

集合类的使用方式总结:

Set:

与Iterator接口结合使用,使用循环指示器循环读取Set集合中的元素

List:

使用元素索引值顺序读取List集合中的元素

Map:

首先使用循环指示器获取Map的键集合中的键对象,然后通过键对象读取值对象。

2.Hibernate的集合类映射

根据java集合类的特点,Hibernate中可以分为如下几种集合类映射:

无序,通常用于一对多或多对多关联关系映射。

有序,必须要有一个索引字段。

无序,必须要有一个映射关键字字段。

有序,必须要有一个索引字段。

有序,必须要有一个索引字段

不同的接口类需要映射到不同的Hibernate集合类映射元素

集合类接口

常用实现类

映射元素

Java.util.Set

Java.util.ArrayList

Java.util.Vector

Java.util.Collection

Java.util.HashSet

Java.util.ArrayList

Java.util.Map

Java.util.HashMap

Java.util.Hashtable

Java.util.StoreSet

Java.util.TreeSet

Java.util.StoreMap

Java.util.TreeMap

3.集合类映射的定义

集合类映射的一般定义格式:

<集合类映射元素><!

--set、map、list等标记-->

<集合外键><!

--对应于集合实体的主键的外键-->

<集合索引字段/><!

--除set和bag以外的集合映射需要映射索引值或字段-->

<集合元素/>

import java.util.List; import java.util.Map;import java.util.Set; 

1.public class CollectionMapping {  

2.    private int id;  

3.    private String name;  

4.    private Set setValues;  

5.    private List listValues;  

6.  private String[] arrayValues;  

7.    private Map mapValues;  

8.    public String[] getArrayValues() { return arrayValues; }  

9.    public void setArrayValues(String[] arrayValues) {  

10.        this.arrayValues = arrayValues;  

11.    }  

12.    public int getId() {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.mapValues = mapValues;  

21.    }  

22.    public Set getSetValues() {  return setValues; }  

23.    public void setSetValues(Set setValues) {  

24.        this.setValues = setValues;  

25.    }  

26.    public String getName() { return name;}  

27.    public void setName(String name) {this.name = name;}  

28. }  

1.

xml version="1.0"?

>  

2.

DOCTYPE hibernate-mapping PUBLIC   

3.    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  

4.    "

5.  

6.    

7.table="t_collection_mapping">  

8.          

9.              

10.          

11.          

12.          

13.              

14.              

15.          

16.          

17.              

18.              

19.            

20.          

21.        

22.              

23.              

24.              

25.                

26.          

27.              

28.              

29.              

30.          

31.      

32.  

4.Hibernate关联关系映射目录

├─单向关联

│ ├─ 一对一外键单向关联

│ ├─ 一对一主键单向关联

│ ├─ 一对一连接表单向关联

│ ├─ 一对多外键单向关联

│ ├─ 一对多连接表单向关联

│ ├─ 多对一外键单向关联

│ ├─ 多对一连接表单向关联

│ └─ 多对多单向关联

└─双向关联

├─ 一对一外键双向关联

├─ 一对一主键双向关联

├─ 一对一连接表双向关联

├─ 一对多外键双向关联

├─ 一对多连接表双向关联

└─ 多对多双向关联

4.1一对一外键单向关联

模型一个人(Person)对应一个地址(address)

实体:

publicclassPerson{

privateintpersonid;

privateStringname;

privateintage;

privateAddressaddress;

publicclassAddress{

privateintaddressid;

privateStringaddressdetail;

 

表模型

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|

+-----------+-----------------+-------+------+---------+-------------------+

|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属性,映射配置为:

--用来映射关联POcolumn是Address在该表中的外键列名,增加unique变成“1-1”-->

4.2一对一主键单向关联

1-1的关联可以基于主键关联,但基于主键关联的持久化类不能拥有自己的主键生成策略,它的主键由关联类负责生成。

另外,增加one-to-one元素来关联属性,必须为one-to-one元素增加constrained="true"属性,表明该类主键由关联类生成。

模型:

一个人(Person)对应一个地址(Address)

实体:

publicclassPerson{

privateintpersonid;

privateStringname;

privateintage;

privateAddressaddress;

publicclassAddress{

privateintaddressid;

privateStringaddressdetail;

表模型

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|

+------------+---------------+-------+------+---------+-------------------+

|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中配置id生成策略为:

--基于主键关联时,主键生成策略是foreign,表明根据关联类生成主键-->

--关联持久化类的属性名-->

address

......

--用于映射1-1关联-->

--基于主键关联时,主键生成策略是foreign,表明根据关联类生成主键-->

--关联持久化类的属性名-->

address

--用于映射1-1关联-->

4.3一对一连接表单向关联

这种情况很少见,但Hibernate同样允许采用连接表关联1-1.有连接表的1-1同样只需要将N-1的many-to-one元素增加unique="true"属性即可。

publicclassPerson{

privateintpersonid;

privateStringname;

privateintage;

privateAddressaddress;

publicclassAddress{

privateintaddressid;

privateStringaddressdetail;

 

表结构

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|

+--------------+---------+------+-----+---------+-------+

|personid|

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

当前位置:首页 > 幼儿教育 > 少儿英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1