java 对象 级联 关联表6_持久化对象级联关系

类之间关联的Hibernate表现

在Java程序中,类之间存在多种包含关系,典型的三种关联关系有:一个类拥有另一个类的成员,一个类拥有另一个类的集合的成员;两个类相互拥有对象的集合的成员.在Hibernate中,我们可以使用映射文件中的many-to-one, one-to-many, many-to-many来实现它们.这样的关系在Hibernate中简称为多对一,一对多和多对多.

多对一的类代码

事件与地点是典型的多对一关系,多个事件可以在一个地点发生(时间不同),一个地点可发生多个事件.它们的对应关系是(多)事件对(一)地点.

两个类的代码如右:

public class Event{

private String id;

private String name;

private Location location;

}

public class Location{

private String id;

private String name;

}

多对一的映射文件

/p>

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

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

table="Event_TB">

/p>

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

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

table="Location_TB">

多对一的表数据

aed80236b5d9d4b9c282f3761be58ad9.png

一对多的类代码

如果一个用户有多个权限,那么User类和Privilege类就构成了一对多的关系,User类将包含一个Privilege类的集合.

public class User{

private String id;

private String name;

private Set privileges=new LinkedHashSet();

}

public class Privilege{

private String id;

private String userId;

private int privilegeLevel;

}

一对多的映射文件

/p>

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

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

table="User_TB">

/p>

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

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

table="Privilege_TB">

一对多的表数据

f71f1c113c9f82ac9834fcc65b549af3.png

多对多

多对多关系 是指两个类相互拥有对方的集合,如文章和标签两个类,一篇文章可能有多个标签,一个标签可能对应多篇文章.要实现这种关系需要一个中间表的辅助.

类代码如右:

public class Article{

private String id;

private String name;

private Set tags = new HashSet();

}

public class Tag{

private String id;

private String name;

private Set articles = new HashSet();

}

多对多的映射文件

/p>

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

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

/p>

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

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

多对多的表数据

posted on 2008-04-30 20:33 和风细雨 阅读(444) 评论(0)  编辑  收藏 所属分类: Hibernate

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值