hibernate进阶 (8)双向多对一

来源:互联网 发布:防攻击软件 编辑:程序博客网 时间:2024/06/11 12:31

接着上两节讲


双向多对一 :单向多对一  +  单向一对多

即:双方都要有对方的引用,都要设置映射文件

Gradel类设置对对方的引用


Grade,hbm.xml设置一对多映射



Student类:设置对对方的引用



Student.hbm.xml 设置多对一映射



测试方法:


执行结果,执行成功:数据库的图我就不截了


下面是关于双向多对一性能方面的优化问题

如下执行的时候

头两句是查询数据库主键的最大值(这是设置自增数据库必须做的一步)

第三句是添加班级

第四五句是添加学生

最后两句(红框)是为了维持一对多关系做的一步,其实完全没必要,学生既然知道自己的班级了,这个是不是就没必要了可能你还不太明白,请往下读....



优化:

这里需要理解一个属性

inverse属性:<set>节点的inverse属性指定关联关系的控制方向,默认由one方(班级)来维护

其实我们不希望班级来维护这个关联关系,学生自身会进行关联关系的维护(如果双方都维护,性能上是有影响的)


关联关系中,inverse=“false”则为主动方,由主动方负责维护关联关系

在一对多关联中,只能设置one方的inverse为true,定义为反转由多方(班级)进行维护,这样one方就不会进行管理关系的维护了,有利于性能提升


Grade.hbm.xml



运行,可以看到不再执行那两句了


0 0
原创粉丝点击