本文共 1208 字,大约阅读时间需要 4 分钟。
注意:一对多中 一的一方默认是懒加载 多的一方默认是迫切加载
cascade = CascadeType.PERSIST
:级联保存 保存1方,多方一并保存 前提: 多方和一方都要维护彼此关系cascade = CascadeType.REMOVE
cascade = CascadeType.ALL
拥有级联添加和级联修改还有级联删除
如果级联删除用到的话,还不够,我们一般喜欢使用最强级联,你还得配置一个信息叫做 orphanRemoval = true 孤儿删除注意:以后大家使用级联删除的时候,一定要慎用,一不小心数据全部删完
name = "user_role"
中间表对应的表名 joinColumns =@JoinColumn(name="user_id")
本方domain在中间表对应的列名 inverseJoinColumns = @JoinColumn(name="role_id")
对方domain在中间表对应的列名答:因为性能太低了,因为保存数据的时候,不管先保存1方还是多方都要多发送sql语句一方根本就不擅长关系的维护
怎么优化 请使用双向一对多注意事项:以后大家在对象中申明关联对象是集合的时候,一定要用接口申明 不能使用实现类申明,否则立马挂掉
先保存1方,再保存多方 1方再发送2条sql语句去维护关系
先保存多方,再保存1方 2条脏数据更新,2条sql语句来自于1方维护关系
从上面这个列子我们可以看出,1方根本就不适合维护关系,维护关系,还得交给多方维护
得出一个结论: 保存数据的时候永远先保存1方,再保存多方,性能最好如果要使用级联保存,必须双方都要维护关联对象
//一方维护多方目的: 它拥有级联保存多方order.getItems().add(item1);order.getItems().add(item2);//多方维护一方的目的: 让外键有值item1.setOrder(order);item2.setOrder(order);
特点:能保留1方,多方干掉
转载地址:http://ujphn.baihongyu.com/