假设我有一个数据库,其中有两个表:companies
和employees
。
如果我从这两个表中选择、更新、添加和删除,是否应该创建companyDAO
和employeeDAO
?
或者我应该创建一个DAO,在其中我将为数据库中的每个表的CRUD操作编写方法?
最佳答案
是的,对大多数实体使用单独的DAO
s是有意义的。
通常情况下,您将使用泛化的DAO
s,也就是说,您有一个抽象的超级类。在一个简化的示例中,它可能如下所示:
class BaseDAO<T extends Entity>
它提供了一系列有用的方法来查找、删除或更新实体。当为每个实体定义该BaseDAO的子类时,例如。
class EmployeeDAO extends BaseDAO<Employee>
确保所有dao都返回只需在BaseDAO中实现的方法的正确类型。因此,您的EmployeeDAO中的
findAll()
方法将返回List<Employee>
。此外,您还可以为某些实体实现自定义操作的方法,例如在相应的类中的
findEmployeesWithSalaryAbove(long)
。你不想让它们弄乱一把刀。