使用关联关系操纵对象:
两个实体对象之间的关系有4种:一对一,一对多,多对一和多对多。对于关联关系的配置有如下4个值需要注意:
l 本身类的主键值id
l 关联类的主键值id
l <key column=””>的值
l <column=””>的值
其中,本身类的主键id和关联类的主键id不用使用column去指定,Hibernate会自己识别。并且有一个规则:<key column=””>的值和本身类的主键id对应;<column=””>的值和关联类的主键id对应。
一对一比较简单,因为没有column属性。
一对多需要指定自己的主键值和关联类的哪一个列值相对应,所以要设置<key column=””>。多对一关系中,“多”的这一边在相应的数据表中需要增加一个字段来保存关系,这个字段存放和关联类(也就是“一”那一端)得主键id相同的值,也可以设为外键引用。多对多关联中,两个实体类需要告诉辅助表:“你这表中哪个字段值是我的主键,哪个字段是我所关联的类的主键”,因此<key column=””>和<column=””>都要设置。
双向关联中一定要注意inverse的使用,设置了inverse=“true”的这一端比较清闲,他把控制权交给了另一端。一对多应该让“多”这一端有控制权,也就是在“一”这一端设置inverse=”true”。
多对多中不可以把cascade设为all或delete,比如删除了一个学生,不应该级联删除他所选的课程的记录,因为这些课程还可能被其他学生所选择了。