JPA的实体关联中cascade的使用
?
在一对多关联关系中什么时候应该使用级联的方式呢?
其实是否应该使用级联应该是个业务问题而不是个技术问题。
在一对多的级联中:
如果对象之间是组合关系,使用级联;
如果是聚合关系,不用级联.
?
首先简单说明一下组合和聚合的区别:
这两个词的来源是面向对象的分析与设计的技术中产生的。
当一个对象A是由多个其它对象(B,C,D...)组成的,如果当A不存在了,那么B,C,D...的存在就没有意义的情况下那么它们之间就是组合关系。
如果当A不存在了,B,C,D...单独存在也是有意义的情况下就是聚合关系。
?
下面来举一个一对多组合关系的例子,这个例子中是对JAVA文件的结构进行建模。如图所示:
某中sourceclass是java文件的信息。
sourcefield是java文件的信息。
sourcemethod是java文件的方法信息。
sourcemethodparameter是java文件的方法参数信息。
sourcemethodreturnvalue是java文件的方法返回值信息。
当一个java的文件被删除了,那么她所对应的属性信息,方法信息的存在就没有意义了。如果当删除java的文件信息的时候,没有删除她的属性信息和方法信息,那么就会留下很多的孤儿-垃圾数据。所以她们之间的关系就属于组合关系。在实体映射的时候,就应该把他们配置级联。
?
?
?
?
?