Hibernate inverse属性与cascade属性

理解:

inverse属性为false的那一端。拥有管理关系维护的权利

cascade属性指级联,说的通俗点,在cascade那端指定的操作。会影响到所关联的对象


举个样例:

班级和学生的关系是一对多

班级class类包括id,名称和学生的Set集合

学生student类包括id。姓名和班级的id(外键)


cascade属性:学生是依赖班级存在的,班级不存在。那么学生也不存在。也就是说,删除班级的同一时候,学生也就得删除,而不能反过来。

一的那端删除时,多的那方已经没有意义了;而多的那端删除时,并不能代表一的那端没有意义。

有点绕。

那么属性设置是。class 设置“all",student设置“save-update”,那样。对class的操作都能影响student。对student的操作之后保存和更新才影响class。


inverse属性:这个属性是具有管理和维护权利的。在一对多的关系中,假设设置班级有这个权利,那么班级会管理维护学生集合。当保存班级时。就会更新全部学生集合里的外键属性,这不是我们想要的,当数量非常多时,性能不好。而假设把这个权利交给学生时,保存班级时。就不会更新学生集合里的属性,这个外键能够由我们自己手动设置。通俗点说就是。班级假设选择学生。那么会改动学生的班级属性;假设反过来,学生选择班级,学生里的班级属性已经设置了。不用班级去担心了。世界清净了。


以上都是我个人的理解。网上看到的经验是:inverse属性通常是由多端维护,多对多的情况选择一端维护。不要两端都维护,cascade属性通常是一端设置“all”,多端设置“save-update”。


ok,世界清净了。


原文地址:https://www.cnblogs.com/yangykaifa/p/6753106.html