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

inverse跟cascade的用法

2012-08-28 
inverse和cascade的用法这两个属性都用于一多对或者多对多的关系中。而inverse特别是用于双向关系,在单向关

inverse和cascade的用法

这两个属性都用于一多对或者多对多的关系中。而inverse特别是用于双向关系,在单向关系中我们并不需要。

?

Cascade代表是否执行级联操作,Inverse代表是否由己方维护关系。

?

Cascade:

?

Cascade属性的可能值有

??? all: 所有情况下均进行关联操作,即save-update和delete。
??? none: 所有情况下均不进行关联操作。这是默认值。
??? save-update: 在执行save/update/saveOrUpdate时进行关联操作。
??? delete: 在执行delete 时进行关联操作。

??? all-delete-orphan: 当一个节点在对象图中成为孤儿节点时,删除该节点。比如在一个一对多的关系中,Student包含多个book,当在对象关系中删除一个book时,此book即成为孤儿节点。

?

Inverse:

?

Inverse属性的可能值是true或者false,默认为false:

?

???? false代表由己方来维护关系,true代表由对方来维护关系。在一个关系中,只能由一方来维护关系,否则会出问题(解疑中会讲到);同时也必须由一方来维护关系,否则会出现双方互相推卸责任,谁也不管。

?

一多对的例子:

?

有两个类,Father和Child,是一对多的关系。下面这段hbm配置是从Father.hbm.xml中摘取的。

?

?

<set name="children" lazy="true" cascade="all" inverse="true">    <key column="fatherid"/>    <one-to-many 且 inverse = "false":

public void addToEvent(Event event) {           this.getEvents().add(event);           event.getParticipants().add(this);   }     public void removeFromEvent(Event event) {           this.getEvents().remove(event);           event.getParticipants().remove(this);   }  

?

热点排行