来自书本ssh整合框架的开发。假设学生和分数是一对多的关系。
分数到学生是单向多对一关联。在分数类上有个学生的类的成员属性。画图时:分数表指向学生表。N:1。(以*表示N)
书中没有配置级联属性。
学生到分数的关联是单向一对多关联。画图时:学生表指向分数表,1:N。学生有个set<分数>成员属性。书中说更新学生记录时,出现n条sql更新分数,不推荐使用这种方式。
基于外键的单向一对一关联,多对一上添加unique,唯一性约束。
基于主键的单向一对一关联。从分数到学生,在分数上添加学生成员类属性,学生类不添加分数的成员属性了。分数的id配置为foreign。
双向一对一关联。在学生配置文件添加级联,表示控制方的信息修和删,影响到非控制方。在分数配置了fetch="select"。
双向多对一关联。学生配置文件中,一对多,有级联和inverse=true;表示关系的维护是主控方(一方)维护;受控方(多方)分数维护;也就是分数的stu_id由谁来控制。inverse默认为false,表示是学生表控制;inverse=true,表示是分数去控制。这里是修改分数记录影响学生记录。我觉得,按照书中的说法,false由一方维护,在删除一方时,会自动删除多方。书中推荐使用true,也就是多方维护,这样直观。
在MyEclipse自动生成的配置文件中,使用inverse=true;好像没级联,需要手动删除多方级联。