2

2つのクラス:

部門タスク

1つの部門が多くのタスクを持つことができます。1つのタスクは1つの部門にのみ属することができます。

では、1対多または多対1を使用しますか?


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>
.....

多対1

class Department{

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

違いは何ですか?

ところで、セットとリストの使用の違いは何ですか?

そして、list(xml構成)を使用した例?

4

4 に答える 4

2

タスクは、私が推測する部門なしでは存在できませんが、部門は、それに関連付けられたタスクなしで存在できます。したがって、依存関係は、それ自体を部門にアタッチするタスクに依存しているため、関係の所有側である必要があります。ここでは、多対1を選択する必要があります。

于 2011-03-13T13:54:01.930 に答える
0

構造を見ただけで、多対多を選びます。
タスクを別の部門に再割り当てする必要がある場合は、元の部門オブジェクトではなく、タスクオブジェクトのみを変更する必要があります。

Javaコレクションからは、セットは重複を許可しませんが、リストは重複を許可しません。

于 2011-03-12T08:21:54.617 に答える
0

あなたの選択は、次の 2 点に依存します。

  1. この関係が使用されるさまざまなシナリオは何ですか。たとえば、部門ごとにタスクをリストする必要がある場合は、一対多が必要です。Hibernate を使用しているため、一度ロードするのも簡単です。

  2. 部門ごとにタスクを更新する場合は、他の関係も必要です。

ただし、この決定は、ドメイン モデルとそれをどのように構築するかに深く関係していることを忘れないでください。これらのエンティティが使用されるユースケースは何ですか。このSO スレッドを読むことを強くお勧めします。さらに、Eric Evans によるこのビデオもご覧ください。

それが役立つことを願っています。

于 2011-03-12T11:25:52.893 に答える
-1

DEPARTMENT_TASKSという結合テーブルを定義し、それらの間にManyToMany関係を設定する必要があります。

于 2011-03-12T08:19:51.330 に答える