hibernate——一对一、多对一和多对多关系的比较

hibernate——一对一、多对一和多对多关系的比较

ID:14221069

大小:62.50 KB

页数:5页

时间:2018-07-26

hibernate——一对一、多对一和多对多关系的比较_第1页
hibernate——一对一、多对一和多对多关系的比较_第2页
hibernate——一对一、多对一和多对多关系的比较_第3页
hibernate——一对一、多对一和多对多关系的比较_第4页
hibernate——一对一、多对一和多对多关系的比较_第5页
资源描述:

《hibernate——一对一、多对一和多对多关系的比较》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、现在学习完了这几种映射关系,但是有点乱,这里来小结一下。关键是表之间如何产生映射关系,以及产生的表的结构。1、一对一映射:一对一是通过one-to-one标签来产生映射关系的,其实,如果单单说是建立两个表之间的关联,只要在一个映射文件中配置one-to-one标签就可以了,在另一个映射文件中,也做类似的配置,只会起到关联的作用,建立起双向的关联。这里举Person和IdCard的例子,IdCard类的映射文件如下:[html]viewplaincopyprint?1.  2.      

2、    3.                4.          5.          6.          7.  

3、>constrained="true"指定了将person表的主键设置为id_card表的外键,这样就建立起了两个表的关联,若不指定,两个表就是孤立的,互相没有关系。建立表的ddl语句如下:[sql]viewplaincopyprint?1.CREATE TABLE `id_card` (  2.  `id` int(11) NOT NULL AUTO_INCREMENT,  3.  `No` varchar(255)

4、 DEFAULT NULL,  4.  PRIMARY KEY (`id`),  5.  KEY `FK627C1FB4AEED3EC` (`id`),  6.  CONSTRAINT `FK627C1FB4AEED3EC` FOREIGN KEY (`id`) REFERENCES `person` (`id`)  7.) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=gbk  CREATETABLE`id_card`(`id`int(11)NOTNULLAUTO_INCREMENT,`No`varchar(2

5、55)DEFAULTNULL,PRIMARYKEY(`id`),KEY`FK627C1FB4AEED3EC`(`id`),CONSTRAINT`FK627C1FB4AEED3EC`FOREIGNKEY(`id`)REFERENCES`person`(`id`))ENGINE=InnoDBAUTO_INCREMENT=2DEFAULTCHARSET=gbk在Person类的映射文件中可以不指定one-to-one标签,但那样建立起来的是单向的映射关系,即从id_card表可以映射到person表,但是反之就不行。这在通过person表查询id_card表时,不能

6、查询。如果要让person关联到id_card那么就要在Person类的映射文件中,也配置一下one-to-one标签了。2、多对一映射:建立两个表的映射的关系,都是通过建立外键来关联的,多对一也不例外,例如员工和部门的关系属于多对一的关系,多个员工属于同一个部门,所以在部门类中要有一个员工的集合属性。要实现双向映射的话,还必须在员工类中有部门的属性。如果单单建立两个表之间的关联,也像一对一一样,只需要在一个映射文件中配置就可以了,但是,多对一的映射文件的配置不像一对一那样简单,相对复杂的是在“一”这个角色,不是只使用一个就可以了的,

7、看下面这个配置“一”角色的例子:[html]viewplaincopyprint?1.部门类的映射文件:  2.  3.          4.              5.          6.          7.          8.          9.            

8、>