【发布时间】:2011-10-01 12:22:47
【问题描述】:
假设我有一个User 类和两个子类Employee 和Customer。我将此层次结构实现为 DB 中的每个层次结构的表,其中有一列用于指定用户的类型。查询此表时,我需要返回正确类型的对象。
我是否需要为每种类型的对象(如 CustomerDAO 或 EmployeeDAO)提供单独的 DAO,因此每个对象都返回各自的 Customer 和 Employee 对象。如果是这样,如何在不使用的情况下从DAOFactory 获取它们:
if(type.equlas('customer'))
return customerDao;
else
retrun employeeDao;
因为实现User 的类型可能会改变,我不想每次都改变条件。
或者还有其他方法吗?任何想法将不胜感激。
注意:我没有使用任何 ORM 框架,也不打算使用。
【问题讨论】:
-
你能多谈谈你的类层次结构吗? Employee 是 User 的子类,还是两个实体之间存在某种联系?另外,您希望从您的 DAO 中返回什么引用类型?
-
@jtoberon 是的 Employee 和 Customer 是 User 类型。我只有用户 ID。根据这些 ID,我必须查询同一个表,如果用户类型为客户,则获取
Customer,如果类型为员工,则获取Employee。
标签: java orm polymorphism dao table-per-hierarchy