Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我是否需要一个更简单的类来搜索复杂的业务实体?_Java_Performance_Business Objects - Fatal编程技术网

Java 我是否需要一个更简单的类来搜索复杂的业务实体?

Java 我是否需要一个更简单的类来搜索复杂的业务实体?,java,performance,business-objects,Java,Performance,Business Objects,一个智能业务对象实际上可能包含来自多个数据库表的信息。构建业务对象可能需要多个数据库查询。但是,有时您并不需要业务对象的完整信息。我是否需要再创建一个简单的类,只包含业务实体的基本信息 我有一个部门的例子: public class Department { String name; String description; //have to query other Table to get headOfDepartment Employee headOfDepa

一个智能业务对象实际上可能包含来自多个数据库表的信息。构建业务对象可能需要多个数据库查询。但是,有时您并不需要业务对象的完整信息。我是否需要再创建一个简单的类,只包含业务实体的基本信息

我有一个部门的例子:

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;
}
2) 使用部门,但不提供完整信息。 这样,“部门”对象可能包含以下数据:

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

我应该选择哪种解决方案?

因为成员只能属于一个部门。子部门也可以只属于一个部门——这里有一对多的关系

存储这些实体的键列表是很常见的。如果需要,通过ID获取这些实体。这种方法通常用于大型表,例如

所以我建议有一个实体来存储成员和子部门的密钥

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_Ids> members;
    //have to query other table to get subDepartments.
    List<Department_Ids> subDepartments;
}
公共课部{
字符串名;
字符串描述;
//必须查询其他表才能获得部门负责人
部门员工负责人;
//必须查询其他表才能获取成员
成员名单;
//必须查询其他表才能获取子部门。
列出附属部门;
}

嗯,当我面对这个问题时,我会根据类的常见用法采取不同的方法。 如果我的应用程序最常用的是最简单的定义类,那么我将我的类一分为二,并从最简单的类扩展最复杂的类。 如果使用最简单的不太常见,那么我只使用复杂的和inicialice作为未使用属性的null。我这样做是为了让我的代码尽可能干净

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;
}
公共课部{
字符串名;
字符串描述;
}
公共类部门综合楼扩展部门{
//必须查询其他表才能获得部门负责人
部门员工负责人;
//必须查询其他表才能获取成员
成员名单;
//必须查询其他表才能获取子部门。
列出附属部门;
}

如果使用最简单的不太常见,那么我只使用复杂的和inicialice作为未指定属性的null。在一个类中保留两个null属性不会占用您太多内存。

“在一个类中保留两个null属性不会占用您太多内存。”--我关心的null属性不是内存,而是协作。如果另一个开发人员获得了具有null属性的复杂属性,他可能会将null属性视为非数据。然而,数据库中有数据。另一个开发人员应该知道,这个复杂的配置没有完全配置。如果他想获得详细信息,他应该提供复杂的信息。
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;
}