2

二类:

部门任务

一个部门可以有很多任务。一项任务只能属于一个部门。

那么使用一对多还是多对一呢?


one-to-many
class Department{
  private Set tasks;
}
class Task{
  ......
}
//
Department.hbm.xml
....
<set name="tasks">
    <key column="departId" />
    <one-to-many class="Task" />
</set>
.....

多对一

class Department{

}
class Task{
  Department depart;
}
//
Task.hbm.xml
....
<property name="depart">
    <many-to-one class="Department" />
</property>
.....

有什么不同?

顺便说一句,使用集合和列表有什么区别?

以及使用列表(xml 配置)的示例?

4

4 回答 4

2

我想一个任务不能没有部门就存在,但是一个部门可以没有与之关联的任务而存在。因此,依赖于任务将自己附加到部门,因此应该是关系中的拥有方。多对一应该是您的选择。

于 2011-03-13T13:54:01.930 回答
0

只看结构,我会选择多对一。
如果必须将任务重新分配给另一个部门,则只需更改任务对象,而不是原始部门对象。

在 java 集合中,Set 不允许重复,而 List 可能

于 2011-03-12T08:21:54.617 回答
0

您的选择将取决于两件事:

  1. 使用这种关系的各种场景是什么?例如,如果您需要按部门列出您的任务,那么您将需要一对多。由于您使用的是 Hibernate,因此加载它们一次也很容易。

  2. 如果您按部门更新任务,那么您也需要其他关系。

但是,请记住,这些决策深深植根于您的领域模型以及您希望如何构建它。使用这些实体的用例是什么。我强烈建议阅读这个SO 线程,此外还可以观看 Eric Evans 的这个视频

希望有帮助。

于 2011-03-12T11:25:52.893 回答
-1

您应该定义一个名为 DEPARTMENT_TASKS 的连接表,并在它们之间建立多对多关系。

于 2011-03-12T08:19:51.330 回答