Hibernate 使用一对多或多对一

Hibernate 使用一对多或多对一,hibernate,one-to-many,many-to-one,Hibernate,One To Many,Many To One,两类: 部门任务 一个部门可以有许多任务。一项任务只能属于一个部门 所以使用一对多还是多对一 一对多 班级部{ 私人设定任务; } 课堂任务{ ...... } // Department.hbm.xml .... ..... 多对一 class Department{ } class Task{ Department depart; } // Task.hbm.xml .... <property name="depart"> <many-to-one c

两类:

部门任务

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

所以使用一对多还是多对一


一对多
班级部{
私人设定任务;
}
课堂任务{
......
}
//
Department.hbm.xml
....
.....

多对一

class Department{

}
class Task{
  Department depart;
}
//
Task.hbm.xml
....
<property name="depart">
    <many-to-one class="Department" />
</property>
.....
班级部门{
}
课堂任务{
科室;
}
//
Task.hbm.xml
....
.....

有什么区别

顺便问一下,使用集合和列表有什么区别


例如使用列表(xml配置)?

您应该定义一个名为DEPARTMENT\u TASKS的联接表,并在它们之间建立多对多关系。

仅通过查看结构,我会选择多对一。
如果必须将任务重新分配给其他部门,则只需更改任务对象,而不需要更改原始部门对象


从java集合中,集合不允许重复,而列表可能

您的选择取决于两件事:

  • 使用这种关系的各种场景有哪些。例如,如果你需要按部门列出你的任务,那么你需要的是一对多。因为您使用的是Hibernate,所以加载它们一次也很容易

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

  • 然而,请记住,这些决策深深扎根于您的领域模型以及您想要如何构建它。使用这些实体的用例是什么。我强烈建议大家阅读这篇文章


    希望能有所帮助。

    我想,没有部门,任务就不可能存在,但没有与其相关的任务,部门也可以存在。因此,依赖关系取决于将自身附加到部门的任务,因此应该是关系中的拥有方。这里应该选择多对一。

    但是我必须列出属于指定部门的所有任务,如果使用多对一,这可能吗?确保sql将
    select*from task,其中department=&1
    replace&1带有部门id,并且您拥有属于该部门的所有任务。
    class Department{
    
    }
    class Task{
      Department depart;
    }
    //
    Task.hbm.xml
    ....
    <property name="depart">
        <many-to-one class="Department" />
    </property>
    .....