加入继承策略 - Hibernate的良好替代方案?

时间:2016-02-25 22:53:59

标签: java hibernate jpa

我目前正在开发一个项目,我们有一个“联合继承”数据库表设置。该设置基本类似于以下内容:

enter image description here

每个子表中的记录与父表具有一对一的关系。现在,只有几个子表,但未来我们可以拥有更多的子表。

我知道这可以通过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时相比,这似乎会增加新类型的工作量。

0 个答案:

没有答案