0

1 つのインテリジェント ビジネス オブジェクトには、実際には複数のデータベース テーブルからの情報が含まれている場合があります。ビジネス オブジェクトの構築には、複数のデータベース クエリが必要になる場合があります。ただし、ビジネス オブジェクトの完全な情報が必要でない場合もあります。ビジネス エンティティの基本情報だけを含む単純なクラスをもう 1 つ作成する必要がありますか?

部門の例があります:

public class Department {
    String name;
    String description;
    //have to query other Table to get headOfDepartment
    Employee headOfDepartment;
    //have to query other table to get members
    List<Employee> members;
    //have to query other table to get subDepartments.
    List<Department> subDepartments;
}

「Department」オブジェクトを構築するには、異なるデータベース テーブルに対して複数のクエリを実行して、メンバーの headOfDepartment と subDepartments を取得する必要があります。

すべての部門をリストしたいだけなら、実際には「members」、「headOfDepartment」、および「subDepartments」は必要ありません。必要なのは、各「部門」の「名前」と「説明」だけです。

この場合、2 つの解決策があります。

1) SimpleDepartment という名前のクラスを次のように作成します。

public class SimpleDepartment {
    String name;
    String description;
}

2) Department を使用しますが、完全な情報は提供しません。このように、「Department」オブジェクトには次のデータが含まれる場合があります。

Department{
name:"CCS"
description : "CCS is under CEO office to help CEO handling emails."
headOfDepartment : null
members : null
subDepartments : null
}

どのソリューションを選択すればよいですか?

4

2 に答える 2

0

さて、私がこの問題に直面したとき、クラスの一般的な使用法に従って、さまざまなアプローチをとっていました。アプリケーションで最も一般的な用途が最も単純な定義クラスになる場合、クラスを 2 つに分割し、最も単純なものから最も複雑なものを拡張します。最も単純なものの使用がそれほど一般的ではない場合は、複雑なものを使用し、未使用のプロパティを null として inicialice を使用します。コードをできるだけきれいに保つためにそうしています。

public class Department {
   String name;
   String description;    
}
public class DepartmentComplex extends Department{
   //have to query other Table to get headOfDepartment
   Employee headOfDepartment;
   //have to query other table to get members
   List<Employee> members;
   //have to query other table to get subDepartments.
   List<Department> subDepartments;
}

最も単純なものの使用がそれほど一般的ではない場合は、複雑なものを使用し、使用されていないプロパティを null として inicialice を使用します。クラスに 2 つの null プロパティを保持しても、メモリを大量に消費することはありません。

于 2013-07-06T10:02:49.163 に答える