3

Spring MVC と通常の JDBC を使用しています。

ビジネス プロセスを、プレゼンテーション レイヤー、コントローラー レイヤー、サービス レイヤー、およびリポジトリ/DAO レイヤーに分割する必要があることを学びました。Personここで、複数の を持つことができるEntity という名前があるとしますJobsJobそれ自体は、独自のプロパティを持つ別のエンティティです。私が収集したものから、リポジトリ レイヤーは 1 つのエンティティのみを管理します。これで、別のエンティティを含む 1 つのエンティティができました。どこでそれらに「参加」できますか? サービス層?

まだ知られていない を取得したいとします (遅延読み込みperson) 。しかし、システムは後でその特定がjob何であるかを尋ねるかもしれません. この場合、各レイヤーの役割は何ですか?jobperson

この質問に詳細を追加する必要がある場合はお知らせください。

4

3 に答える 3

0

問題のステートメントから収集できるものから:-

  1. 人 - 仕事がなくても存在できます。0 個以上のジョブを持つことができます。
  2. 仕事 - それを実行する人から独立して存在できます。

よりクリーンな方法は、このマッピングをカプセル化するエンティティ (およびそのテーブル) を持つことです。

class Employment{
     private Person person;
     private Job job;
}

これで、両端からクエリを実行できます。お気に入り:-

  • 雇用から選択 WHERE PERSON.ID=xyz

これにより、0 行以上になる場合があります。

各行には、マップされたジョブの情報も含まれます。

したがって、この場合、サービス/リポジトリは次のようになります。

interface EmployementRepository{

   //  CRUD methods on Employement.
}
于 2013-10-22T09:50:43.507 に答える
0

多対多の関係を扱っているようです。複数の人が同じ仕事を持つことができる場合は、ジャンクション テーブルを作成する必要があります。

データ・モデル

CREATE TABLE PERSON(PERSON_ID, OTHER_FIELDS);
CREATE TABLE JOB(JOB_ID, OTHER_FIELDS);
CREATE TABLE PERSON_JOB(PERSON_JOB_ID, PERSON_ID, JOB_ID, OTHER_FIELDS);

エンティティ

class Person{
    List<Job> jobs = new ArrayList<Job>();
}

class Job{
    List<Person> workers = new ArrayList<Person>();
}

リポジトリ/dao レイヤーでは、ジャンクション テーブルを使用して 2 つのエンティティ間のこれらの関連付けを満たすロジックを作成する必要があります。

于 2013-10-22T10:00:39.783 に答える
0

典型的な OOP では、オブジェクト間の関係は関連付けを作成することによって作成されます。Jobaとの間の関連付けPersonが多対 1 の場合。次に、 a のプロパティを に追加する必要がありPersonますJob。一方、 と の関連付けPersonは1 対多であるため、一連のをJob に追加できます。個人の関連付けられたすべてのジョブをロードしたくない場合は、遅延ロード用にこの関連付けをマップできます。これは、ORM および JPA でデフォルトで使用されます。 JobPerson

class Person {
 Set<Job> jobs;
}

class Job {
 Person person;
}

各レイヤーは、同じオブジェクトまたは異なるオブジェクトを処理するために使用されるロジックを分離および分離するために使用されます。

一方、オブジェクト モデルのマッピングに使用されるオブジェクトはレイヤーごとに異なる可能性があり、モデルを更新する必要がある場合はデータを変換する必要があります。これは、永続レイヤーに使用される永続フレームワークの実装に依存します。永続化レイヤーの実装から抽象化できるサービス レイヤーがあり、永続化フレームワークを最近変更しても、サービス レイヤーにカプセル化されたビジネス ロジックは変更されません。プレゼンテーション層には、プレゼンテーション層のさまざまな側面を処理するために使用されるビュー オブジェクトと呼ばれる独自のオブジェクトが含まれている場合もあります。これらのオブジェクトを作成、操作、および提示するロジックは、明らかにプレゼンテーション フレームワークによって実装されるプレゼンテーション層に属します。

于 2013-10-22T09:39:56.943 に答える