一、多对多映射的简单介绍
在之前的文章里,我们介绍了Hibernate中怎样使用一对一映射、一对多和多对一映射,现在来简单介绍一下多对多映射。多对多映射在数据库中也是很常见的一种映射关系,例如项目和员工之间就是很典型的多对多映射,一个项目中可能会涉及很多员工,同时一个员工也可能参与很多项目。在数据库中,要实现多对多映射,一种很常见的方法就是添加一个中间表来指定关联关系,即新增一张包含关联双方主键的关联表。而在Hibernate中可以通过在双方实体类中定义关联对象集合,并在双方的映射文件中配置<set>和<many-to-many>元素来实现多对多映射。下面就通过一个实例来分析以下Hibernate中的多对多映射。
二、多对多映射实例
我们就以项目和员工表作为实例来讲解多对多关系映射,首先我们要建立项目表project:
CREATE TABLE `project` (
`proid` int(11) NOT NULL,
`proname` varchar(20) NOT NULL,
PRIMARY KEY (`proid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
项目表中只有两个简单的字段项目id和项目名称。然后我们建立员工表employee:
CREATE TABLE `employee` (
`empid` int(11) NOT NULL,
`empname` varchar(20) DEFAULT NULL,
PRIMARY KEY (`empid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
表中有员工id和员工名称字段。因为项目和员工是多对多的映射关系,所以我们需要建立一张中间表proemp来表示它们的关联关系,这个表中有项目表和员工表的双方主键。
CREATE TABLE `proemp` (
`rproid` int(11) DEFAULT NULL,
`rempid` int(11) DEFAULT NULL,
KEY `fk_rproid` (`rproid`),
KEY `fk_rempid` (`rempid`),
CONSTRAINT `fk_rempid` FOREIGN KEY (