【问题标题】:Making a Java class more flexible使 Java 类更灵活
【发布时间】:2015-03-25 01:55:23
【问题描述】:

到目前为止,每当我处理数据库时,我都会创建一个名为DatabaseConnector 的接口和一个实现它的类DatabaseHandler。下面是DatabaseConnector的例子(去掉了参数)

public interface DBConnectorIntf 
{    
    //Conection stuff
    public void createConnection();
    public void closeConnection();
    public void checkConnection();

    public void insertUser(------);
    public void insertSubUser(----);
    public void updateUser(-----);
    public void updateSubUser(------);
    public void updateSubUserType(------);
    public void deleteUser(-----);   
    public void deleteSubUser(-----);   
    public void deleteSubUserType(------); 
}

但是我们有大约 30 个表(这意味着大约 90 个方法),所以如果我们将这些表的每个插入、删除和更新方法(这意味着大约 90 个方法)添加到这个 interface 并使用 DatabaseHandler 实现它,那么就会出现以下问题。

  1. 只有一个人可以开发该类,其他人必须等到他完成。
  2. 如果有人需要更改至少一种方法,那么他必须致电该类的开发人员。
  3. 大约有 20,000 个行代码。
  4. 这将是一场单人表演,因此需要时间。

由于这些原因,我们需要做的就是将它“分解”成小块,然后交给 4,5 个人来开发。我们该怎么做?

有一个建议的方法,我们为每个数据库表创建一个类。所以会有UserTableSubUserTable、SubUserTypeTable`等类。

下面是一个例子。

public abstract class DBMaster()
{
   public void createConnection(){CODE HERE};
   public void closeConnection(){CODE HERE};
   public void checkConnection(){CODE HERE};
}

public class UserTable extends DBMaster
{
   public void insertUser(------){CODE};
   public void deletetUser(------){CODE};
   public void updateUser(------){CODE};
}

public class SubUserTable extends DBMaster
{
   public void insertSubUser(------){CODE};
   public void deleteSubUser(------){CODE};
   public void updateSubUser(------){CODE};
}

那么哪种方法更标准?或者任何其他类似的方式? (没有Hibernate 等)

更新

我知道有 Hibernate 等框架。但这不是这里的问题,而是要知道上述哪种方式是标准的,因此请为我提供问题的答案/cmets。

【问题讨论】:

  • 看起来您正在尝试重塑 ORM 和 DAO。
  • 使用 hibernate、spring jdbc 或一些 activerecord 实现。但不要自己动手,这是浪费时间。
  • 为什么要重新发明轮子?按照建议,将 Hibernate 用于您的数据库 CRUD 使用
  • 你应该有一个User(或者更好的UserService)的接口,而不是DBMasterDBMaster 想要一个连接池或工厂模式。这样,想要使用User类的开发者只需要开发接口即可。然后 DB 开发人员实现它。就像大家说的那样,使用像 Hibernate 这样的现有框架。

标签: java oop jdbc interface abstract-class


【解决方案1】:

处理这个问题的最标准方法是使用 JPA,它是 Java EE 的一部分。 可能它最著名的实现是 Hibernate,所以我推荐你使用 JPA/Hibernate。

你可以在google上找到很多这方面的信息,例如:https://docs.jboss.org/hibernate/orm/3.6/quickstart/en-US/html/hibernate-gsg-tutorial-jpa.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-08
    相关资源
    最近更新 更多