【发布时间】:2014-01-26 21:48:23
【问题描述】:
这里是官方Hibernate tutorial的摘录
首先,请记住,Hibernate 不会影响正常的 Java 语义。我们如何在 Person 和 Event 之间创建链接 单向的例子?您将 Event 的实例添加到 事件引用的集合,Person 的一个实例。如果你想 要使这个链接是双向的,你必须在另一个上做同样的事情 通过在 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);
}
在这种情况下,“绝对”一词是什么意思? :
- 意思是建议只要当前逻辑过程完成就保持关系一致,但显然会发生持久化?
- 意思是不设置对方(不拥有关系),可以严格不做持久化?
换句话说,如果我的“添加”方法是:
public void addToEvent(Event event) {
this.getEvents().add(event);
//event.getParticipants().add(this); without this line
}
【问题讨论】:
标签: java sql hibernate bidirectional-relation