一对多关联映射
什么是one-to-many?
概念
一对多关联,一个对象通过关联属性能够对应多个对象。
在数据库中表现为:一张表中的记录通过在另一张表中设立外键来与其建立关联关系,外键在另一张表中对应本表中对应记录的主键,且可以拥有相同的外键来对应本表中的同一条记录。
举例:
学生在学校中都有所属的班级,一个班级对象中可以有多个学生对象,而每个学生对象都对应着一个班级。班级和学生之间的关系就是多对一关系。
建立模型
使用并配置one-to-many
定义实体类
Student类:
Classes类:
使用set集合定义关联属性的类型。
PS: Hibernate对set进行了重写,使set支持懒加载,因此Hibernate中一般使用的是set而不是list
略过Student.hbm.xml映射文件,我们主要看Classes.hbm.xml:
主键生成策略为native(数据库生成)
使用set标签映射set集合 (没有进行泛型的集合可以存放任何类型的对象),设置set中存放Student类型的对象。
通过key标签指定在one-to-many所指的Student类所对应的表中创建名为classesid字段,该字段作为外键,参照当前类所对应表中的主键。
PS: key标签用来在其他表中设立关联本表的外键字段。
配置原理
将外键字段建立在另一张表中,这个字段参照的是当前表的主键,从而建立两张表的联系。
one-to-many的应用
使用一对多关联进行表的创建和使用
创建表:
我们看到t_student表中添加了classid字段,且classid作为外键,参照t_classes表中的主键。