【发布时间】: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 实现它,那么就会出现以下问题。
- 只有一个人可以开发该类,其他人必须等到他完成。
- 如果有人需要更改至少一种方法,那么他必须致电该类的开发人员。
- 大约有 20,000 个行代码。
- 这将是一场单人表演,因此需要时间。
由于这些原因,我们需要做的就是将它“分解”成小块,然后交给 4,5 个人来开发。我们该怎么做?
有一个建议的方法,我们为每个数据库表创建一个类。所以会有UserTable、SubUserTable、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)的接口,而不是DBMaster。DBMaster想要一个连接池或工厂模式。这样,想要使用User类的开发者只需要开发接口即可。然后 DB 开发人员实现它。就像大家说的那样,使用像 Hibernate 这样的现有框架。
标签: java oop jdbc interface abstract-class