关联映射-双向关联

来源:互联网 发布:php的mime类型是什么 编辑:程序博客网 时间:2024/06/04 17:44

在单向Set-based关联的代码基础上做的双向关联。

首先往Event类里添加参与者集合:

private Set participants = new HashSet();    public Set getParticipants() {        return participants;    }    public void setParticipants(Set participants) {        this.participants = participants;    }
往Event.hbm.xml加入以下代码:

<set name="participants" table="PERSON_EVENT" inverse="true">            <key column="EVENT_ID"/>            <many-to-many column="PERSON_ID" class="Person"/>        </set>

inverse="true";inverse倒转,倒向;有点生涩,可以理解为是否放弃维护participants的关联关系。

如何维护双向关联?

在person端设置event集合的引用,在event端设置person集合的引用。

很多开发者也谨慎编写和创建连接管理方法来正确设置双向关联:

protected Set getEvents() {        return events;    }    protected void setEvents(Set events) {        this.events = events;    }    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);    }
get和set的访问修饰符为protected。是的同一个包和子类能够访问这些方法。在Event端也做类似修改。

原则:所有双向关联需要有一方为inverse,在one-to-many关系中应有由多的一方维护关联关系,在many-to-many中可为任意一方。


0 0
原创粉丝点击