采坑系列之JPA级联删除和更新


springboot-jpa


本人觉得还是最简单粗暴的就是干掉数据,删除起来真的是风雨无阻,基本没有坑。
但想想还是把自己的测试过程分享出来,就当纪念自己的劳动过程吧。。。
直接上代码:

  • 控制层代码
    public void cascadeUpdate(Integer id){
//        User user = userService.findById(id);
//        userService.deleteObject(user);

        Address address = addressService.findById(id);
        addressService.delete(address);
    }
  • 我是在维护端发起的删除操作,级联属性设置为Cascade.ALL,处理的赶紧利落,三张表的数据都是轻松干掉。
    结果如下:
    这里写图片描述

  • 级联更新的原理我理解的就是先查出原始数据,然后再将新数据保存替代原数据,和删除一样,没有出现任何问题,测试轻松实现让我总是觉得哪不对劲,但是就是实现数据的更新了。。。先上代码:

 public void cascadeUpdate(Integer id){
        //这里利用的是多对一,address是一方,user是多方
        Address address = addressService.findById(id);
        if(null != address){
            address.setAddressName("北京中关村口");
            List<User> users = address.getUsers();
            if(users.size()>0){
                users.get(0).setName("赵红");
                users.get(1).setName("张小明");
            }
        }
        addressService.save(address);
    }

输出结果如下:
这里写图片描述

  • 无论从维护端还是被维护端发起的删除或更新操作都是成功的,但是在查询文档的过程中发现,如果维护端的表结构中设置了被维护端的字段外键,最好不要再被维护端设置级联属性,由于本人未在实际业务中使用,只是在自己的测试代码中模拟实现,如果涉及到实际业务,还需谨慎使用。

猜你喜欢

转载自blog.csdn.net/qq_39486758/article/details/80622934