我目前正在开发一个项目,我们有一个“联合继承”数据库表设置。该设置基本类似于以下内容:
每个子表中的记录与父表具有一对一的关系。现在,只有几个子表,但未来我们可以拥有更多的子表。
我知道这可以通过JPA / Hibernate轻松完成,但我的团队并不热衷于使用它。
这是我不依赖Hibernate的解决方案:
public interface PersonDao<T> {
T create(T t);
// other methods omitted for brevity
}
public class EmployeeDao implements PersonDao<Employee> {
private static final String CREATE_SQL = "INSERT INTO EMPLOYEE...";
@Override
public Employee create(Employee employee) {
// create Employee
}
}
public class OwnerDao implements PersonDao<Owner> {
/* same pattern as EmployeeDao */
}
public class PersonDaoFactory {
public PersonDao dao(String type) {
if (type.equals("OWNER")) {
return new OwnerDao();
} else if (type.equals("EMPLOYEE")) {
return new EmployeeDao();
}
throw new RuntimeException("Could not find DAO for type '" + type + "'");
}
}
我的问题是,在不使用像Hibernate这样的ORM的情况下,在可维护性和良好设计方面是否有更好的解决方案?与使用Hibernate时相比,这似乎会增加新类型的工作量。