【发布时间】:2017-09-03 14:58:28
【问题描述】:
我正在编写一个应用程序来管理一个数据库,使用 JDBC 和 JPA 进行考试。我希望用户在开始时选择一次要使用的 API,以便所有应用程序都将使用所选 API(无论是 JPA 还是 JDBC)。
目前我决定使用这种方法:
- 我为每个 DAO 类创建了一个接口(例如
interface UserDAO),其中包含所有需要的方法声明。 - 我为每个 DAO 创建了两个类通过使用的 API 区分(例如
UserDAOImplJDBC和UserDAOImplJPA)。它们都实现了接口(在我们的例子中,UserDAO)。 - 我创建了第三个类(例如
UserDAOImpl),它扩展了 JDBC 实现类。 在我的所有代码中,我一直在使用这个类。当我想切换到 JPA 时,我只需将所有 DAO 类中的extends ***ImplDAOJDBC更改为extends ***ImplDAOJPA。
现在,由于我开始拥有许多 DAO 类,因此每次修改代码都开始变得复杂。
有没有办法更快地更改所有extends?
我正在考虑在第一个屏幕中添加一个选项(例如 radioGroup)来选择 JDBC 或 JPA。但是我不知道如何在不重构所有代码的情况下使其工作。有什么想法吗?
【问题讨论】:
-
我建议改变你的方法。 (1) 保留
UserDAO、UserDAOImplJDBC和UserDAOImplJPA。 (2) 创建一个类和方法DaoProvider.getUserDao(Type t)(或工厂,如果您正在创建新实例而不是重用它们),它将根据所需类型(JPA 或 JDBC)返回正确的UserDAO。 -
问你的老师,因为这真的没有意义,即使目标是比较两种方法。它们太不同了,当您开始使用 JDBC 时,您将无法有意义地使用大部分 JPA。如果您从 JPA 开始,则必须使用 JDBC 对其进行模拟。无论如何,这不会是一个有意义的比较。在生产环境中有两个实现是很浪费的。
标签: java jpa optimization jdbc