两节课:
部门任务
一个部门可以完成很多任务。一项任务只能属于一个部门。
那么使用一对多还是多对一?
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>
.....
有什么区别?
BTW,使用set和list有什么区别?使用list(xml配置)的例子?
答案 0 :(得分:2)
如果没有我想要的部门,任务就不可能存在,但是部门可以在没有与之关联的任务的情况下存在。所以依赖是将任务附加到部门的任务,因此应该是关系中的拥有者。多对一应该是你的选择。
答案 1 :(得分:0)
只要看一下结构,就会选择多对一的结构 如果必须将任务重新分配给另一个部门,则只需要更改任务对象,而不是原始部门对象。
从java集合中,Set不允许重复,而List可能
答案 2 :(得分:0)
您的选择取决于两件事:
使用此关系的各种方案有哪些。对于例如如果你需要按部门列出你的任务,那么你需要的是One to Many。由于您使用的是Hibernate,因此加载它们也很容易。
如果按部门更新任务,则还需要其他关系。
但是,请记住,这些决定深深扎根于您的域模型以及您希望如何构建它。使用这些实体的用例是什么?我强烈建议您阅读此SO thread以及watch this video by Eric Evans。
希望有所帮助。
答案 3 :(得分:-1)
您应该定义一个名为DEPARTMENT_TASKS的连接表,并且它们之间具有ManyToMany关系。