hibernate入门三:一对多关联关系映射
实体之间的一对多关系是很常见的一种关联关系,例如:一个人有多套房子,那就有多个地址,一个人在淘宝分不同时段买了多个东西,那就有多个订单;对于在数据库来说,那就是外键的约束关系,多的一方有个字段是外键,指向一的一方。在hibernate中,一对多关联关系映射分为2种,需分情况使用。一种是单向关联关系映射,一种是双向关系映射,下面以2张表说明,表中外键约束通过hibernate维护。下面是表间关系
其去掉foreign key 的SQL为:
CREATE TABLE `ADDRESS` (
`ID` int(4) NOT NULL auto_increment,
`CITY` varchar(40) default NULL,
`STREET` varchar(100) default NULL,
`PERSON_ID` int(4) NOT NULL default '0',
PRIMARY KEY (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=gb2312;
CREATE TABLE `PERSON` (
`ID` int(4) NOT NULL auto_increment,
`NAME` char(20) default NULL,
`PHONE` char(20) default NULL,
PRIMARY KEY (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=gb2312;
一对多单向关联关系和一对多双向关联关系数据库表相同,不同的只是映射的JAVA类及映射文件的配置。DAO代码和测试代码省略。
一对多单向关联关系:
实体类:
一对多单向关联关系,可以从多的一方查询到一的一方,但从一的一方查询不到多的一方。
一对多双向关联关系映射:
实体类:
一对多双向关联关系,双方均可查询到对方。
从上面可以看出,一对多的单向和双向,只不过是在类中是否有对方作为属性,一的一方有个多的一方的set集合,多的一方有个一的一方做为属性。在配置文件中,单双向多的一方的配置均相同,只有一的一方不同。