首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

hibernate入门(9)关联关系中的高级应用_级联操作

2012-10-12 
hibernate入门(九)关联关系中的高级应用_级联操作?1.级联操作:在前面的一对多操作中已经有所体现,现在回到

hibernate入门(九)关联关系中的高级应用_级联操作

?

1.级联操作

在前面的一对多操作中已经有所体现,现在回到前面的一对多操作中,进行一些修改,修改内容如下:

Set<Employee> emps = newHashSet<Employee>();

emps.add(emp1);

emps.add(emp2);

depart.setEmps(emps);
去掉这段注释,并把“s.save(emp1);s.save(emp2);”注释掉,然后运行发现出错。原因是:当我们保存Department depart对象时,发现它所关联到的两个Employee ?emp对象并未保存,而这种要依赖别的对象的操作即是级联操作,级联操作主要体现在关联关系中,且是可配置的,只是默认的级联操作是被设为”none”,而如果我们希望进行级联操作,只需要在<set>配置中增加cascade属性,比如我们现在Department.hbm.xml 的<set>元素下增加cascade="save-update"属性后,再来执行会发现正常,原因是Hibernate进行了级联操作,相当Hibernate帮我们写了注释掉的“s.save(emp1); s.save(emp2)”这两句内容。下面列表说明级联操作的可选值。

功能作用描述

none

save-update

delete

all

delete-orphan

all-delete-orphan

说明:(1)cascade可以在<set><list><bag><map>中进行配置,即在“多对一”、“一对多”、“多对多”、“一对一”这些关联关系中,“级联”都是可配的在一般的对象中不能配置。(2)可以为其配置多个属性值,中间用逗号分隔。如cascade=”save-update,delete”.(3)一般只在“一对一? 一对多”配置级联,而不会在“多对一 多对多”中配置级联,但在配置时最好的方法是根据实际情况进行配置。现举例说明:比如在“部门和员工”之间,如果我们希望部门取消时,属于该部门的员工并不会被取消,而是分到的别的部门,我们就不应为cascade配置“delete”值。

?

热点排行