hibernate做更新操作的时候,
比如我有一个订单表order,
一个乘机人表passenger,
还有一个航班信息表flight,
order与passenger一对多的关系,
order与flight一对多的关系,
0:如果查询出来没有做任何修改,进行更新
hibernate不会做更新处理,不会执行sql语句。
1:只更新order表中的数据
hibernate首先会根据外键查询订单下面对应passenger和flight表中的信息。执行2条sql
然后执行一条更新order的sql语句。
原理,级联更新的时候,主关联的表有变动,会先把被关联的查询出来看,是否可以做级联操作。
2:如果order表没有做任何修改,passenger表修改了
因为order表没有变,所以不会先查询passenger和flight表中的信息,不会多产生2条查询sql语句。
然后更新数据变化了的记录,更新变化了的字段。